Commit 3b17515c0273e2056a87c6048a1aabe24217f245
Committed by
Andrew Kane
1 parent
250baf40
Exists in
master
and in
18 other branches
Add support for script option in aggregations. (#1177)
Showing
3 changed files
with
13 additions
and
1 deletions
Show diff stats
README.md
... | ... | @@ -792,6 +792,12 @@ Minimum document count |
792 | 792 | Product.search "apples", aggs: {store_id: {min_doc_count: 2}} |
793 | 793 | ``` |
794 | 794 | |
795 | +Script support | |
796 | + | |
797 | +```ruby | |
798 | +Product.search "*", aggs: {color: {script: {source: "'Color: ' + _value"}}} | |
799 | +``` | |
800 | + | |
795 | 801 | Date histogram |
796 | 802 | |
797 | 803 | ```ruby | ... | ... |
lib/searchkick/query.rb
... | ... | @@ -736,7 +736,7 @@ module Searchkick |
736 | 736 | aggs = Hash[aggs.map { |f| [f, {}] }] if aggs.is_a?(Array) # convert to more advanced syntax |
737 | 737 | aggs.each do |field, agg_options| |
738 | 738 | size = agg_options[:limit] ? agg_options[:limit] : 1_000 |
739 | - shared_agg_options = agg_options.slice(:order, :min_doc_count) | |
739 | + shared_agg_options = agg_options.slice(:order, :min_doc_count, :script) | |
740 | 740 | |
741 | 741 | if agg_options[:ranges] |
742 | 742 | payload[:aggs][field] = { | ... | ... |
test/aggs_test.rb
... | ... | @@ -34,6 +34,12 @@ class AggsTest < Minitest::Test |
34 | 34 | assert_equal ({2 => 2}), store_agg(aggs: {store_id: {min_doc_count: 2}}) |
35 | 35 | end |
36 | 36 | |
37 | + def test_script | |
38 | + source = "'Color: ' + _value" | |
39 | + agg = Product.search("Product", aggs: {color: {script: {source: source}}}).aggs["color"] | |
40 | + assert_equal ({"Color: blue" => 1, "Color: green" => 1, "Color: red" => 1}), buckets_as_hash(agg) | |
41 | + end | |
42 | + | |
37 | 43 | def test_no_aggs |
38 | 44 | assert_nil Product.search("*").aggs |
39 | 45 | end | ... | ... |