Class: Trample::Backend::Searchkick
- Inherits:
-
Object
- Object
- Trample::Backend::Searchkick
- Defined in:
- lib/trample/backend/searchkick.rb
Instance Method Summary collapse
- #execute_search(query) ⇒ Object
-
#initialize(metadata, models) ⇒ Searchkick
constructor
A new instance of Searchkick.
- #query!(conditions, aggregations) ⇒ Object
-
#resume_or_execute(conditions, aggregations) ⇒ Object
There are 3 types of searches.
Constructor Details
#initialize(metadata, models) ⇒ Searchkick
Returns a new instance of Searchkick.
7 8 9 10 |
# File 'lib/trample/backend/searchkick.rb', line 7 def initialize(, models) @metadata = @_models = models end |
Instance Method Details
#execute_search(query) ⇒ Object
42 43 44 45 |
# File 'lib/trample/backend/searchkick.rb', line 42 def execute_search(query) search_params = raw_search_params(query, scroll: @metadata.scroll) ::Searchkick.client.search(search_params) end |
#query!(conditions, aggregations) ⇒ Object
12 13 14 15 16 17 18 19 20 21 |
# File 'lib/trample/backend/searchkick.rb', line 12 def query!(conditions, aggregations) results = resume_or_execute(conditions, aggregations) { total: results.total_count, took: results.response['took'], results: results.results, scroll_id: results.response['_scroll_id'] } end |
#resume_or_execute(conditions, aggregations) ⇒ Object
There are 3 types of searches
-
A) Vanilla
-
B) Vanilla, but tell ES we are scrolling
-
C) A scroll search, using the scroll_id from B
28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/trample/backend/searchkick.rb', line 28 def resume_or_execute(conditions, aggregations) payload = build_payload(conditions, aggregations, @metadata, @_models) query = ::Searchkick::Query.new(@_models.first, keywords(conditions), payload) response = if @metadata.scroll_id resume_search(@metadata.scroll_id) else execute_search(query) end results = query.handle_response(response) parse_response_aggs!(results.aggs, aggregations) if results.response.has_key?('aggregations') results end |