Commit c74c0eba19f0a8be121bf00b738bacde9db6f6a2
1 parent
f9086b58
Exists in
master
and in
21 other branches
Smart aggs true by default
Showing
2 changed files
with
19 additions
and
19 deletions
Show diff stats
lib/searchkick/query.rb
@@ -362,9 +362,9 @@ module Searchkick | @@ -362,9 +362,9 @@ module Searchkick | ||
362 | } | 362 | } |
363 | } | 363 | } |
364 | 364 | ||
365 | - agg_options.deep_merge!(where: options.fetch(:where, {}).reject { |k| k == field } ) if options[:smart_aggs] == true | ||
366 | - agg_filters = where_filters(agg_options[:where]) | ||
367 | - | 365 | + where = {} |
366 | + where = (options[:where] || {}).reject { |k| k == field } unless options[:smart_aggs] == false | ||
367 | + agg_filters = where_filters(where.merge(agg_options[:where] || {})) | ||
368 | if agg_filters.any? | 368 | if agg_filters.any? |
369 | payload[:aggs][field] = { | 369 | payload[:aggs][field] = { |
370 | filter: { | 370 | filter: { |
test/aggs_test.rb
@@ -33,34 +33,34 @@ class TestAggs < Minitest::Test | @@ -33,34 +33,34 @@ class TestAggs < Minitest::Test | ||
33 | assert_equal(1, agg["sum_other_doc_count"]) if Gem::Version.new(Searchkick.server_version) >= Gem::Version.new("1.4.0") | 33 | assert_equal(1, agg["sum_other_doc_count"]) if Gem::Version.new(Searchkick.server_version) >= Gem::Version.new("1.4.0") |
34 | end | 34 | end |
35 | 35 | ||
36 | - def test_where_no_smart_aggs | ||
37 | - assert_equal ({2 => 2}), store_agg(where: {color: "red"}, aggs: {store_id: {where: {in_stock: false}}}) | ||
38 | - assert_equal ({2 => 2}), store_agg(where: {color: "blue"}, aggs: {store_id: {where: {in_stock: false}}}) | 36 | + def test_query_where |
37 | + assert_equal ({1 => 1}), store_agg(where: {in_stock: true}, aggs: [:store_id]) | ||
39 | end | 38 | end |
40 | 39 | ||
41 | - def test_smart_aggs | ||
42 | - assert_equal ({1 => 1}), store_agg(where: {in_stock: true}, aggs: [:store_id], smart_aggs: true) | 40 | + def test_two_wheres |
41 | + assert_equal ({2 => 1}), store_agg(where: {color: "red"}, aggs: {store_id: {where: {in_stock: false}}}) | ||
43 | end | 42 | end |
44 | 43 | ||
45 | - def test_smart_aggs_where | ||
46 | - assert_equal ({2 => 1}), store_agg(where: {color: "red"}, aggs: {store_id: {where: {in_stock: false}}}, smart_aggs: true) | 44 | + def test_where_override |
45 | + assert_equal ({}), store_agg(where: {color: "red"}, aggs: {store_id: {where: {in_stock: false, color: "blue"}}}) | ||
46 | + assert_equal ({2 => 1}), store_agg(where: {color: "blue"}, aggs: {store_id: {where: {in_stock: false, color: "red"}}}) | ||
47 | end | 47 | end |
48 | 48 | ||
49 | - def test_smart_aggs_where_override | ||
50 | - assert_equal ({2 => 1}), store_agg(where: {color: "red"}, aggs: {store_id: {where: {in_stock: false, color: "blue"}}}, smart_aggs: true) | ||
51 | - assert_equal ({}), store_agg(where: {color: "blue"}, aggs: {store_id: {where: {in_stock: false, color: "red"}}}, smart_aggs: true) | 49 | + def test_skip |
50 | + assert_equal ({1 => 1, 2 => 2}), store_agg(where: {store_id: 2}, aggs: [:store_id]) | ||
52 | end | 51 | end |
53 | 52 | ||
54 | - def test_smart_aggs_skip_agg | ||
55 | - assert_equal ({1 => 1, 2 => 2}), store_agg(where: {store_id: 2}, aggs: [:store_id], smart_aggs: true) | 53 | + def test_skip_complex |
54 | + assert_equal ({1 => 1, 2 => 1}), store_agg(where: {store_id: 2, price: {gt: 5}}, aggs: [:store_id]) | ||
56 | end | 55 | end |
57 | 56 | ||
58 | - def test_smart_aggs_skip_agg_complex | ||
59 | - assert_equal ({1 => 1, 2 => 1}), store_agg(where: {store_id: 2, price: {gt: 5}}, aggs: [:store_id], smart_aggs: true) | 57 | + def test_multiple |
58 | + assert_equal ({"store_id" => {1 => 1, 2 => 2}, "color" => {"blue" => 1, "green" => 1, "red" => 1}}), store_multiple_aggs(aggs: [:store_id, :color]) | ||
60 | end | 59 | end |
61 | 60 | ||
62 | - def test_multiple_aggs | ||
63 | - assert_equal ({"store_id" => {1 => 1, 2 => 2}, "color" => {"blue" => 1, "green" => 1, "red" => 1}}), store_multiple_aggs(aggs: [:store_id, :color]) | 61 | + def test_smart_aggs_false |
62 | + assert_equal ({2 => 2}), store_agg(where: {color: "red"}, aggs: {store_id: {where: {in_stock: false}}}, smart_aggs: false) | ||
63 | + assert_equal ({2 => 2}), store_agg(where: {color: "blue"}, aggs: {store_id: {where: {in_stock: false}}}, smart_aggs: false) | ||
64 | end | 64 | end |
65 | 65 | ||
66 | protected | 66 | protected |