class Elastic::Query

Add activerecord related query helpers

Attributes

index[R]

Public Class Methods

new(_index, _query_config = nil) click to toggle source
# File lib/elastic/query.rb, line 12
def initialize(_index, _query_config = nil)
  @index = _index
  @config = _query_config || build_base_config
end

Public Instance Methods

aggregate(_node) click to toggle source
# File lib/elastic/query.rb, line 69
def aggregate(_node)
  execute assembler.assemble_metric _node
end
as_es_query() click to toggle source
# File lib/elastic/query.rb, line 59
def as_es_query
  assembler.assemble.render
end
as_query_node() click to toggle source
# File lib/elastic/query.rb, line 55
def as_query_node
  @config.query.clone
end
compose(&_block) click to toggle source
# File lib/elastic/query.rb, line 63
def compose(&_block)
  agg_nodes = []
  Dsl::ResultComposer.new(agg_nodes).tap(&_block)
  execute assembler.assemble_metrics agg_nodes
end
ids() click to toggle source
# File lib/elastic/query.rb, line 38
def ids
  execute assembler.assemble_ids
end
limit(_size) click to toggle source
# File lib/elastic/query.rb, line 17
def limit(_size)
  with_clone { |config| config.limit = _size }
end
Also aliased as: size
offset(_offset) click to toggle source
# File lib/elastic/query.rb, line 22
def offset(_offset)
  with_clone { |config| config.offset = _offset }
end
pick(_field) click to toggle source
# File lib/elastic/query.rb, line 42
def pick(_field)
  execute assembler.assemble_pick(_field)
end
result(_reset = false) click to toggle source
# File lib/elastic/query.rb, line 50
def result(_reset = false)
  @result = nil if _reset
  @result ||= execute(assembler.assemble)
end
segment(*_params) click to toggle source
# File lib/elastic/query.rb, line 32
def segment(*_params)
  with_clone do |config|
    config.groups << Commands::BuildAggFromParams.for(index: index, params: _params)
  end
end
size(_size)
Alias for: limit
sort(*_params) click to toggle source
# File lib/elastic/query.rb, line 26
def sort(*_params)
  with_clone do |config|
    config.sort = Commands::BuildSortFromParams.for(index: index, params: _params)
  end
end
total() click to toggle source
# File lib/elastic/query.rb, line 46
def total
  execute assembler.assemble_total
end

Private Instance Methods

assembler() click to toggle source
# File lib/elastic/query.rb, line 94
def assembler
  Core::QueryAssembler.new(@index, @config)
end
build_base_config() click to toggle source
# File lib/elastic/query.rb, line 85
def build_base_config
  Core::QueryConfig.initial_config
end
execute(_query) click to toggle source
# File lib/elastic/query.rb, line 89
def execute(_query)
  raw = @index.connector.query(query: _query.render)
  _query.handle_result(raw, formatter)
end
formatter() click to toggle source
# File lib/elastic/query.rb, line 98
def formatter
  Core::SourceFormatter.new(@index.definition)
end
with_bool_query(&_block) click to toggle source
# File lib/elastic/query.rb, line 81
def with_bool_query(&_block)
  with_clone { |config| _block.call(config.query) }
end
with_clone(&_block) click to toggle source
# File lib/elastic/query.rb, line 75
def with_clone(&_block)
  new_config = @config.clone
  _block.call(new_config)
  self.class.new(@index, new_config)
end