module ElasticsearchQueryParser
Mail ElasticsearchQueryParser
interface
Public Class Methods
configuration()
click to toggle source
Gem configuration object For now only contain 1 attribute: `elastic_field_name` option (by default :text) Responds with OpenStruct entity which responds_to `elastic_field_name` Example:
>> ElasticsearchQueryParser.configuration => #<OpenStruct elastic_field_name=:text>
# File lib/elasticsearch_query_parser.rb, line 15 def self.configuration @configuration ||= OpenStruct.new( elastic_field_name: :text ) end
configure() { |configuration| ... }
click to toggle source
For gem configuration For now only `elastic_field_name` can be modified. See README.md for details
# File lib/elasticsearch_query_parser.rb, line 23 def self.configure yield(configuration) end
parse_query(user_query)
click to toggle source
Parse given string into Elastic query object (see README.md for more examples) Example:
>> ElasticsearchQueryParser.parse_query("London") => { query: { bool: { should: [{ match: { text: { query: "London", operator: "and" } } }] } } }
# File lib/elasticsearch_query_parser.rb, line 31 def self.parse_query(user_query) query = Sentence.new(user_query).to_s return {} if query.to_s.empty? parse_tree = Grammar::Parser.new.parse(query) transformed_query = Grammar::Transformer.new.apply(parse_tree) { query: transformed_query.to_elasticsearch } rescue Parslet::ParseFailed => e raise ParseFailedException, e.parse_failure_cause end