class Elasticfusion::Search::Query::Visitors::Elasticsearch
Constants
- OPERATORS
Public Class Methods
new(keyword_field, mapping)
click to toggle source
# File lib/elasticfusion/search/query/visitors/elasticsearch.rb, line 10 def initialize(keyword_field, mapping) @keyword_field = keyword_field @sanitizer = ValueSanitizer.new(mapping) end
Public Instance Methods
visit_FieldTerm(node)
click to toggle source
# File lib/elasticfusion/search/query/visitors/elasticsearch.rb, line 35 def visit_FieldTerm(node) value = @sanitizer.value(node.value, field: node.field) if node.qualifier { range: { node.field.to_sym => { node.qualifier => value } } } else { term: { node.field.to_sym => value } } end end
visit_NegatedClause(node)
click to toggle source
# File lib/elasticfusion/search/query/visitors/elasticsearch.rb, line 25 def visit_NegatedClause(node) clause = if node.body.respond_to?(:op) && node.body.op == :and node.body.children.map { |n| visit(n) } else [visit(node.body)] end { bool: { must_not: clause } } end
visit_PolyadicExpression(node)
click to toggle source
# File lib/elasticfusion/search/query/visitors/elasticsearch.rb, line 18 def visit_PolyadicExpression(node) operator = OPERATORS[node.op] operands = node.children.map { |n| visit(n) } { bool: { operator => operands } } end
visit_Term(node)
click to toggle source
# File lib/elasticfusion/search/query/visitors/elasticsearch.rb, line 45 def visit_Term(node) { term: { @keyword_field => node.body } } end