From 61b90c1d098459a41826d815bd2161e90c24616f Mon Sep 17 00:00:00 2001 From: amalrnambiar Date: Wed, 12 Oct 2022 10:42:16 +0200 Subject: [PATCH 1/2] Add missing value attribute in aggregation --- lib/elasticsearch/dsl/search.rb | 9 +++++++++ lib/elasticsearch/dsl/search/aggregations/terms.rb | 1 + .../dsl/search/base_compound_filter_component.rb | 4 ++++ .../dsl/search/aggregations/terms_spec.rb | 11 +++++++++++ 4 files changed, 25 insertions(+) diff --git a/lib/elasticsearch/dsl/search.rb b/lib/elasticsearch/dsl/search.rb index 268c7c9..d548a89 100644 --- a/lib/elasticsearch/dsl/search.rb +++ b/lib/elasticsearch/dsl/search.rb @@ -224,6 +224,15 @@ def size(value=nil) end end; alias_method :size=, :size + def missing(value=nil) + if value + @missing = value + self + else + @missing + end + end; alias_method :missing=, :missing + # DSL method for building the `from` part of a search definition # # @return [self] diff --git a/lib/elasticsearch/dsl/search/aggregations/terms.rb b/lib/elasticsearch/dsl/search/aggregations/terms.rb index d9ac51d..0b22798 100644 --- a/lib/elasticsearch/dsl/search/aggregations/terms.rb +++ b/lib/elasticsearch/dsl/search/aggregations/terms.rb @@ -45,6 +45,7 @@ class Terms option_method :field option_method :size + option_method :missing option_method :shard_size option_method :order option_method :min_doc_count diff --git a/lib/elasticsearch/dsl/search/base_compound_filter_component.rb b/lib/elasticsearch/dsl/search/base_compound_filter_component.rb index f4c95e3..1e4133e 100644 --- a/lib/elasticsearch/dsl/search/base_compound_filter_component.rb +++ b/lib/elasticsearch/dsl/search/base_compound_filter_component.rb @@ -85,6 +85,10 @@ def size @value.size end + def missing + @value.size + end + def <<(value) @value << value end diff --git a/spec/elasticsearch/dsl/search/aggregations/terms_spec.rb b/spec/elasticsearch/dsl/search/aggregations/terms_spec.rb index a93ec5c..f9de715 100644 --- a/spec/elasticsearch/dsl/search/aggregations/terms_spec.rb +++ b/spec/elasticsearch/dsl/search/aggregations/terms_spec.rb @@ -58,6 +58,17 @@ end end + describe '#missing' do + + before do + search.missing('bar') + end + + it 'applies the option' do + expect(search.to_hash[:terms][:foo][:missing]).to eq('bar') + end + end + describe '#shard_size' do before do From 79a2ba3044d883447ed69d00d7a6587b51101675 Mon Sep 17 00:00:00 2001 From: AmalRNambiar <42249752+AmalRNambiar@users.noreply.github.com> Date: Wed, 12 Oct 2022 11:04:36 +0200 Subject: [PATCH 2/2] Update base_compound_filter_component.rb --- lib/elasticsearch/dsl/search/base_compound_filter_component.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/elasticsearch/dsl/search/base_compound_filter_component.rb b/lib/elasticsearch/dsl/search/base_compound_filter_component.rb index 1e4133e..2144d6c 100644 --- a/lib/elasticsearch/dsl/search/base_compound_filter_component.rb +++ b/lib/elasticsearch/dsl/search/base_compound_filter_component.rb @@ -86,7 +86,7 @@ def size end def missing - @value.size + @value.missing end def <<(value)