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..2144d6c 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.missing + 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