class Skala::ElasticsearchAdapter::Search::RequestTransformation::AddQuery
Public Instance Methods
call()
click to toggle source
# File lib/skala/elasticsearch_adapter/search/request_transformation/add_query.rb, line 7 def call [source.queries, source.facet_queries].flatten.compact.presence.try(:each) do |_query| target["query"] ||= {} target["query"]["bool"] ||= {} target["query"]["bool"]["must"] ||= [] target["query"]["bool"]["must_not"] ||= [] if elasticsearch_query = elasticsearch_query_factory(_query) container = _query.exclude ? target["query"]["bool"]["must_not"] : target["query"]["bool"]["must"] container << elasticsearch_query end end end
Private Instance Methods
elasticsearch_query_factory(query)
click to toggle source
# File lib/skala/elasticsearch_adapter/search/request_transformation/add_query.rb, line 23 def elasticsearch_query_factory(query) case query.type.to_sym when :query_string then query_from_query_string_query(query) when :simple_query_string then query_from_simple_query_string_query(query) when :match then query_from_match_query(query) when :ordered_terms then query_from_ordered_terms_query(query) when :range then query_from_range_query(query) when :unscored_terms then query_from_unscored_terms_query(query) end end
query_from_match_query(query)
click to toggle source
# File lib/skala/elasticsearch_adapter/search/request_transformation/add_query.rb, line 57 def query_from_match_query(query) { "match" => { query.field => query.query } } end
query_from_ordered_terms_query(query)
click to toggle source
# File lib/skala/elasticsearch_adapter/search/request_transformation/add_query.rb, line 65 def query_from_ordered_terms_query(query) { "bool" => { "should" => query.terms.reverse.map.with_index do |_term, _reversed_index| { "constant_score" => { "filter" => { "term" => { query.field => _term } }, "boost" => _reversed_index } } end, } } end
query_from_query_string_query(query)
click to toggle source
# File lib/skala/elasticsearch_adapter/search/request_transformation/add_query.rb, line 34 def query_from_query_string_query(query) { "query_string" => { "default_field" => query.default_field, "default_operator" => "AND", "fields" => query.fields, "query" => query.query }.compact } end
query_from_range_query(query)
click to toggle source
# File lib/skala/elasticsearch_adapter/search/request_transformation/add_query.rb, line 84 def query_from_range_query(query) { "range" => { query.field => { "lte" => query.lte, "gte" => query.gte } .compact } } end
query_from_simple_query_string_query(query)
click to toggle source
# File lib/skala/elasticsearch_adapter/search/request_transformation/add_query.rb, line 45 def query_from_simple_query_string_query(query) { "simple_query_string" => { "default_operator" => query.default_operator, "fields" => query.fields, "query" => query.query, "analyze_wildcard" => true } .compact } end
query_from_unscored_terms_query(query)
click to toggle source
# File lib/skala/elasticsearch_adapter/search/request_transformation/add_query.rb, line 96 def query_from_unscored_terms_query(query) { "constant_score" => { "filter" => { "terms" => { query.field => query.terms } } } } end