Sha256: 5d58dbf2964a67d41c7490d74957c6548510420052d0f06889ff9572870bfc3d

Contents?: true

Size: 1.08 KB

Versions: 19

Compression:

Stored size: 1.08 KB

Contents

module Elastic::Nodes
  class Search < Base
    include Concerns::Aggregable
    include Concerns::HitProvider

    attr_accessor :query, :offset

    def self.build(_query)
      new.tap { |n| n.query = _query }
    end

    def traverse(&_block)
      super
      @query.traverse(&_block)
    end

    def render(_options = {})
      { "query" => @query.render(_options) }.tap do |hash|
        hash["from"] = @offset if offset && offset > 0
        render_hit_options(hash)
        render_aggs(hash, _options)
      end
    end

    def clone
      prepare_clone(super, @query.clone)
    end

    def simplify
      prepare_clone(super, @query.simplify)
    end

    def handle_result(_raw, _formatter)
      Elastic::Results::Root.new(
        _raw['hits'] ? prepare_hits(_raw['hits']['hits'], _formatter) : [],
        _raw['hits'] ? _raw['hits']['total'] : 0,
        _raw['aggregations'] ? load_aggs_results(_raw['aggregations'], _formatter) : {}
      )
    end

    private

    def prepare_clone(_clone, _query)
      _clone.query = _query
      _clone.offset = @offset
      _clone
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
elastic-rails-1.0.4 lib/elastic/nodes/search.rb
elastic-rails-1.0.3 lib/elastic/nodes/search.rb
elastic-rails-1.0.2 lib/elastic/nodes/search.rb
elastic-rails-1.0.1 lib/elastic/nodes/search.rb
elastic-rails-1.0.0 lib/elastic/nodes/search.rb
elastic-rails-0.8.7 lib/elastic/nodes/search.rb
elastic-rails-0.8.6 lib/elastic/nodes/search.rb
elastic-rails-0.8.5 lib/elastic/nodes/search.rb
elastic-rails-0.8.4 lib/elastic/nodes/search.rb
elastic-rails-0.8.3 lib/elastic/nodes/search.rb
elastic-rails-0.8.2 lib/elastic/nodes/search.rb
elastic-rails-0.8.1 lib/elastic/nodes/search.rb
elastic-rails-0.8.0 lib/elastic/nodes/search.rb
elastic-rails-0.7.0 lib/elastic/nodes/search.rb
elastic-rails-0.6.4 lib/elastic/nodes/search.rb
elastic-rails-0.6.3 lib/elastic/nodes/search.rb
elastic-rails-0.6.2 lib/elastic/nodes/search.rb
elastic-rails-0.6.1 lib/elastic/nodes/search.rb
elastic-rails-0.6.0 lib/elastic/nodes/search.rb