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 | 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 | 368 | if agg_filters.any? |
369 | 369 | payload[:aggs][field] = { |
370 | 370 | filter: { | ... | ... |
test/aggs_test.rb
... | ... | @@ -33,34 +33,34 @@ class TestAggs < Minitest::Test |
33 | 33 | assert_equal(1, agg["sum_other_doc_count"]) if Gem::Version.new(Searchkick.server_version) >= Gem::Version.new("1.4.0") |
34 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 64 | end |
65 | 65 | |
66 | 66 | protected | ... | ... |