module Elasticsearch::Rails2::Searching::ClassMethods
Public Instance Methods
scan_all_ids(query_or_payload, options={})
click to toggle source
Scan and scroll all ids Useful to do a SQL query with IN(…) operator
# File lib/elasticsearch/rails2/searching.rb, line 106 def scan_all_ids(query_or_payload, options={}) ids = [] scroll = options[:scroll] search_response = search(query_or_payload, options.update(search_type: 'scan')) response = search_response.response while response = client.scroll(scroll_id: response['_scroll_id'], scroll: scroll) and !response['hits']['hits'].empty? do response['hits']['hits'].each { |r| ids << r['_id']} end ids end
search(query_or_payload, options={})
click to toggle source
Provides a ‘search` method for the model to easily search within an index/type corresponding to the model settings.
@param query_or_payload [String,Hash,Object] The search request definition
(string, JSON, Hash, or object responding to `to_hash`)
@param options [Hash] Optional parameters to be passed to the Elasticsearch
client
@return [Elasticsearch::Rails2::Response]
@example Simple search in ‘Article`
Article.search 'foo'
@example Search using a search definition as a Hash
response = Article.search \ query: { match: { title: 'foo' } }, highlight: { fields: { title: {} } } response.results.first.title # => "Foo" response.results.first.highlight.title # => ["<em>Foo</em>"] response.records.first.title # Article Load (0.2ms) SELECT "articles".* FROM "articles" WHERE "articles"."id" IN (1, 3) # => "Foo"
@example Search using a search definition as a JSON string
Article.search '{"query" : { "match_all" : {} }}'
# File lib/elasticsearch/rails2/searching.rb, line 98 def search(query_or_payload, options={}) search = SearchRequest.new(self, query_or_payload, options) Response::Response.new(self, search) end