Class: Chewy::Search::Request
- Inherits:
- 
      Object
      
        - Object
- Chewy::Search::Request
 
- Defined in:
- lib/chewy/search/request.rb
Overview
The class tries to be as immutable as possible, so most of the methods return a new instance of the class.
The main request DSL class. Supports multiple index requests. Supports ES5 search API and query DSL.
Constant Summary collapse
- UNDEFINED =
- Class.new.freeze 
- EVERFIELDS =
- %w[_index _type _id _parent _routing].freeze 
- DELEGATED_METHODS =
- %i[ query filter post_filter knn order reorder docvalue_fields track_scores track_total_hits request_cache explain version profile search_type preference limit offset terminate_after timeout min_score source stored_fields search_after load script_fields suggest aggs aggregations collapse none indices_boost rescore highlight total total_count total_entries indices types delete_all count exists? exist? find pluck scroll_batches scroll_hits scroll_results scroll_wrappers ignore_unavailable ].to_set.freeze 
- DEFAULT_BATCH_SIZE =
- 1000
- DEFAULT_PLUCK_BATCH_SIZE =
- 10_000
- DEFAULT_SCROLL =
- '1m'.freeze 
- FIELD_STORAGES =
          An array of storage names that are modifying returned fields in hits 
- %i[ source docvalue_fields script_fields stored_fields ].freeze 
- EXTRA_STORAGES =
          An array of storage names that are not related to hits at all. 
- %i[aggs suggest].freeze 
- WHERE_STORAGES =
          An array of storage names that are changing the returned hist collection in any way. 
- %i[ query filter post_filter knn none min_score rescore indices_boost collapse ].freeze 
Chainable request modifications collapse
- 
  
    
      #aggs(value = UNDEFINED)  ⇒ Object 
    
    
      (also: #aggregations)
    
  
  
  
  
  
  
  
  
  
    A dual-purpose method. 
- 
  
    
      #collapse(value)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the value of the collapserequest part.
- 
  
    
      #docvalue_fields(*values)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Modifies docvalue_fieldsrequest parameter.
- 
  
    
      #explain(value = true)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the value of the explainparameter with the provided value.
- 
  
    
      #filter(query_hash = nil, &block)  ⇒ Chewy::Search::Request, Chewy::Search::QueryProxy 
    
    
  
  
  
  
  
  
  
  
  
    Adds filtercontext of thequeryparameter at the search request body.
- 
  
    
      #highlight(value)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Add a highlightconfiguration to the request.
- 
  
    
      #ignore_unavailable(value)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the value of the ignore_unavailablerequest part.
- 
  
    
      #indices(value, *values)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Modifies indexrequest parameter.
- 
  
    
      #indices_boost(value)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Add an indices_boostpart to the request.
- 
  
    
      #knn(value)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the value of the knnrequest part.
- 
  
    
      #limit(value)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the value of the sizerequest part.
- 
  
    
      #load(options = nil)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Stores ORM/ODM objects loading options. 
- 
  
    
      #min_score(value)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the value of the min_scorerequest part.
- 
  
    
      #none(value = true)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Enables NullObjectpattern for the request, doesn't perform the request,#hitsare empty,#totalis 0, etc.
- 
  
    
      #offset(value)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the value of the fromrequest part.
- 
  
    
      #order(*values)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Modifies sortrequest parameter.
- 
  
    
      #post_filter(query_hash = nil, &block)  ⇒ Chewy::Search::Request, Chewy::Search::QueryProxy 
    
    
  
  
  
  
  
  
  
  
  
    Adds post_filterparameter to the search request body.
- 
  
    
      #preference(value)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the value of the preferencerequest part.
- 
  
    
      #profile(value = true)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the value of the profileparameter with the provided value.
- 
  
    
      #query(query_hash = nil, &block)  ⇒ Chewy::Search::Request, Chewy::Search::QueryProxy 
    
    
  
  
  
  
  
  
  
  
  
    Adds queryparameter to the search request body.
- 
  
    
      #reorder(*values)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the value of the sortparameter with the provided value.
- 
  
    
      #request_cache(value)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the value of the request_cacheparameter with the provided value.
- 
  
    
      #rescore(value)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Add a rescorepart to the request.
- 
  
    
      #script_fields(value)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Add a script_fieldspart to the request.
- 
  
    
      #search_after(*values)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the storage value for search_afterrequest part.
- 
  
    
      #search_type(value)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the value of the search_typerequest part.
- 
  
    
      #source(*values)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Updates _sourcerequest part.
- 
  
    
      #stored_fields(*values)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Updates stored_fieldsrequest part.
- 
  
    
      #suggest(value = UNDEFINED)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    A dual-purpose method. 
- 
  
    
      #terminate_after(value)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the value of the terminate_afterrequest part.
- 
  
    
      #timeout(value)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the value of the timeoutrequest part.
- 
  
    
      #track_scores(value = true)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the value of the track_scoresparameter with the provided value.
- 
  
    
      #track_total_hits(value = true)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the value of the track_total_hitsparameter with the provided value.
- 
  
    
      #version(value = true)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Replaces the value of the versionparameter with the provided value.
Scopes manipulation collapse
- 
  
    
      #and(other)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Takes query,filter,post_filterfrom the passed scope and performs QueryProxy#and operation for each of them.
- 
  
    
      #except(*values)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Returns a new scope containing all the storages except specified. 
- 
  
    
      #merge(other)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Merges 2 scopes by merging their parameters. 
- 
  
    
      #not(other)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Takes query,filter,post_filterfrom the passed scope and performs QueryProxy#not operation for each of them.
- 
  
    
      #only(*values)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Returns a new scope containing only specified storages. 
- 
  
    
      #or(other)  ⇒ Chewy::Search::Request 
    
    
  
  
  
  
  
  
  
  
  
    Takes query,filter,post_filterfrom the passed scope and performs QueryProxy#or operation for each of them.
Additional actions collapse
- 
  
    
      #count  ⇒ Integer 
    
    
  
  
  
  
  
  
  
  
  
    Returns total count of hits for the request. 
- 
  
    
      #delete_all(refresh: true, wait_for_completion: nil, requests_per_second: nil, scroll_size: nil)  ⇒ Hash 
    
    
  
  
  
  
  
  
  
  
  
    The result of query execution. 
- 
  
    
      #exists?  ⇒ true, false 
    
    
      (also: #exist?)
    
  
  
  
  
  
  
  
  
  
    Checks if any of the document exist for this request. 
- 
  
    
      #find(*ids)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Finds documents with specified ids for the current request scope. 
- 
  
    
      #first(limit = UNDEFINED)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Return first wrapper object or a collection of first N wrapper objects if the argument is provided. 
- 
  
    
      #performed?  ⇒ true, false 
    
    
  
  
  
  
  
  
  
  
  
    Returns whether or not the query has been performed. 
- 
  
    
      #pluck(*fields)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Returns and array of values for specified fields. 
Instance Method Summary collapse
- 
  
    
      #==(other)  ⇒ true, false 
    
    
  
  
  
  
  
  
  
  
  
    Compare two scopes or scope with a collection of wrappers. 
- 
  
    
      #initialize(*indexes)  ⇒ Request 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    The class is initialized with the list of chewy indexes, which are later used to compose requests. 
- 
  
    
      #inspect  ⇒ String 
    
    
  
  
  
  
  
  
  
  
  
    Includes the class name and the result of rendering. 
- 
  
    
      #parameters  ⇒ Chewy::Search::Parameters 
    
    
  
  
  
  
  
  
  
  
  
    Underlying parameter storage collection. 
- 
  
    
      #render  ⇒ Hash 
    
    
  
  
  
  
  
  
  
  
  
    ES request body. 
- 
  
    
      #response  ⇒ Chewy::Search::Response 
    
    
  
  
  
  
  
  
  
  
  
    Access to ES response wrappers providing useful methods such as Chewy::Search::Response#total or Chewy::Search::Response#max_score. 
- 
  
    
      #response=(from_elasticsearch)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Wraps and sets the raw Elasticsearch response to provide access to convenience methods. 
Methods included from Scrolling
#scroll_batches, #scroll_hits, #scroll_objects, #scroll_wrappers
Methods included from Scoping
Constructor Details
#initialize(*indexes) ⇒ Request
The class is initialized with the list of chewy indexes, which are later used to compose requests. Any symbol/string passed is treated as an index identifier.
| 67 68 69 70 71 | # File 'lib/chewy/search/request.rb', line 67 def initialize(*indexes) parameters.modify!(:indices) do replace!(indices: indexes) end end | 
Instance Method Details
#==(other) ⇒ true, false
Compare two scopes or scope with a collection of wrappers. If other is a collection it performs the request to fetch data from ES.
| 95 96 97 | # File 'lib/chewy/search/request.rb', line 95 def ==(other) super || other.is_a?(Chewy::Search::Request) ? compare_internals(other) : to_a == other end | 
#aggs(value) ⇒ Chewy::Search::Request #aggs ⇒ Hash Also known as: aggregations
A dual-purpose method.
| 725 726 727 728 729 730 731 | # File 'lib/chewy/search/request.rb', line 725 def aggs(value = UNDEFINED) if value == UNDEFINED response.aggs else modify(:aggs) { update!(value) } end end | 
#and(other) ⇒ Chewy::Search::Request
Takes query, filter, post_filter from the passed scope
and performs QueryProxy#and operation for each
of them. Unlike merge, every other parameter is kept unmerged
(values from the first scope are used in the result scope).
| 814 815 816 817 818 819 820 | # File 'lib/chewy/search/request.rb', line 814 %i[and or not].each do |name| define_method name do |other| %i[query filter post_filter].inject(self) do |scope, parameter_name| scope.send(parameter_name).send(name, other.parameters[parameter_name].value) end end end | 
#collapse(value) ⇒ Chewy::Search::Request
Replaces the value of the collapse request part.
| 534 535 536 537 538 | # File 'lib/chewy/search/request.rb', line 534 %i[request_cache search_type preference timeout limit offset terminate_after min_score ignore_unavailable collapse knn].each do |name| define_method name do |value| modify(name) { replace!(value) } end end | 
#count ⇒ Integer
Returns total count of hits for the request. If the request
was already performed - it uses the total value, otherwise
it executes a fast count request.
| 851 852 853 854 855 856 857 858 859 | # File 'lib/chewy/search/request.rb', line 851 def count if performed? total else Chewy.client.count(only(WHERE_STORAGES).render)['count'] end rescue Elastic::Transport::Transport::Errors::NotFound 0 end | 
#delete_all(refresh: true, wait_for_completion: nil, requests_per_second: nil, scroll_size: nil) ⇒ Hash
Returns the result of query execution.
| 983 984 985 986 987 988 989 990 991 992 993 994 995 996 | # File 'lib/chewy/search/request.rb', line 983 def delete_all(refresh: true, wait_for_completion: nil, requests_per_second: nil, scroll_size: nil) request_body = only(WHERE_STORAGES).render.merge( { refresh: refresh, wait_for_completion: wait_for_completion, requests_per_second: requests_per_second, scroll_size: scroll_size }.compact ) ActiveSupport::Notifications.instrument 'delete_query.chewy', notification_payload(request: request_body) do request_body[:body] = {query: {match_all: {}}} if request_body[:body].empty? Chewy.client.delete_by_query(request_body) end end | 
#docvalue_fields(*values) ⇒ Chewy::Search::Request
Modifies docvalue_fields request parameter. Updates the storage on every call.
| 292 293 294 295 296 | # File 'lib/chewy/search/request.rb', line 292 %i[order docvalue_fields].each do |name| define_method name do |value, *values| modify(name) { update!([value, *values]) } end end | 
#except(*values) ⇒ Chewy::Search::Request
Returns a new scope containing all the storages except specified.
| 840 841 842 | # File 'lib/chewy/search/request.rb', line 840 def except(*values) chain { parameters.except!(values.flatten(1)) } end | 
#exists? ⇒ true, false Also known as: exist?
Checks if any of the document exist for this request. If
the request was already performed - it uses the total,
otherwise it executes a fast request to check existence.
| 866 867 868 869 870 871 872 | # File 'lib/chewy/search/request.rb', line 866 def exists? if performed? total != 0 else limit(0).terminate_after(1).total != 0 end end | 
#explain(value = true) ⇒ Chewy::Search::Request
Replaces the value of the explain parameter with the provided value.
| 404 405 406 407 408 | # File 'lib/chewy/search/request.rb', line 404 %i[track_scores track_total_hits explain version profile none].each do |name| define_method name do |value = true| modify(name) { replace!(value) } end end | 
#filter(query_hash) ⇒ Chewy::Search::Request #filter { ... } ⇒ Chewy::Search::Request #filter ⇒ Chewy::Search::QueryProxy
Adds filter context of the query parameter at the
search request body.
| 261 262 263 264 265 266 267 268 269 | # File 'lib/chewy/search/request.rb', line 261 %i[query filter post_filter].each do |name| define_method name do |query_hash = UNDEFINED, &block| if block || query_hash != UNDEFINED modify(name) { must(block || query_hash) } else Chewy::Search::QueryProxy.new(name, self) end end end | 
#find(id) ⇒ Chewy::Index #find(*ids) ⇒ Array<Chewy::Index>
Finds documents with specified ids for the current request scope.
| 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 | # File 'lib/chewy/search/request.rb', line 918 def find(*ids) return super if block_given? ids = ids.flatten(1).map(&:to_s) scope = except(EXTRA_STORAGES).filter(ids: {values: ids}) results = if ids.size > DEFAULT_BATCH_SIZE scope.scroll_wrappers else scope.limit(ids.size) end.to_a if ids.size != results.size missing_ids = ids - results.map(&:id).map(&:to_s) raise Chewy::DocumentNotFound, "Could not find documents for ids: #{missing_ids.to_sentence}" end results.one? ? results.first : results end | 
#first ⇒ Chewy::Index #first(limit) ⇒ Array<Chewy::Index>
Return first wrapper object or a collection of first N wrapper objects if the argument is provided. Tries to use cached results of possible. If the amount of cached results is insufficient - performs a new request.
| 891 892 893 894 895 896 897 898 899 900 | # File 'lib/chewy/search/request.rb', line 891 def first(limit = UNDEFINED) request_limit = limit == UNDEFINED ? 1 : limit if performed? && (terminated_early? || request_limit <= size || size == total) limit == UNDEFINED ? wrappers.first : wrappers.first(limit) else result = except(EXTRA_STORAGES).limit(request_limit).to_a limit == UNDEFINED ? result.first : result end end | 
#highlight(value) ⇒ Chewy::Search::Request
Add a highlight configuration to the request. Further
call values are merged to the storage hash.
| 659 660 661 662 663 | # File 'lib/chewy/search/request.rb', line 659 %i[script_fields indices_boost rescore highlight].each do |name| define_method name do |value| modify(name) { update!(value) } end end | 
#ignore_unavailable(value) ⇒ Chewy::Search::Request
Replaces the value of the ignore_unavailable request part.
| 534 535 536 537 538 | # File 'lib/chewy/search/request.rb', line 534 %i[request_cache search_type preference timeout limit offset terminate_after min_score ignore_unavailable collapse knn].each do |name| define_method name do |value| modify(name) { replace!(value) } end end | 
#indices(value, *values) ⇒ Chewy::Search::Request
Modifies index request parameter. Updates the storage on every call.
Added passed indexes to the parameter list.
| 308 309 310 | # File 'lib/chewy/search/request.rb', line 308 def indices(value, *values) modify(:indices) { update!(indices: [value, *values]) } end | 
#indices_boost(value) ⇒ Chewy::Search::Request
Add an indices_boost part to the request. Further
call values are merged to the storage hash.
| 659 660 661 662 663 | # File 'lib/chewy/search/request.rb', line 659 %i[script_fields indices_boost rescore highlight].each do |name| define_method name do |value| modify(name) { update!(value) } end end | 
#inspect ⇒ String
Includes the class name and the result of rendering.
| 127 128 129 | # File 'lib/chewy/search/request.rb', line 127 def inspect "<#{self.class} #{render}>" end | 
#knn(value) ⇒ Chewy::Search::Request
Replaces the value of the knn request part.
| 534 535 536 537 538 | # File 'lib/chewy/search/request.rb', line 534 %i[request_cache search_type preference timeout limit offset terminate_after min_score ignore_unavailable collapse knn].each do |name| define_method name do |value| modify(name) { replace!(value) } end end | 
#limit(value) ⇒ Chewy::Search::Request
Replaces the value of the size request part.
| 534 535 536 537 538 | # File 'lib/chewy/search/request.rb', line 534 %i[request_cache search_type preference timeout limit offset terminate_after min_score ignore_unavailable collapse knn].each do |name| define_method name do |value| modify(name) { replace!(value) } end end | 
#load(options = nil) ⇒ Object
Stores ORM/ODM objects loading options. Options
might be define per-index or be global, depends on the adapter
loading implementation. Also, there are 2 loading options to select
or exclude indexes from loading: only and except respectively.
Options are updated on further method calls.
| 600 601 602 | # File 'lib/chewy/search/request.rb', line 600 def load( = nil) modify(:load) { update!() } end | 
#merge(other) ⇒ Chewy::Search::Request
Merges 2 scopes by merging their parameters.
| 748 749 750 | # File 'lib/chewy/search/request.rb', line 748 def merge(other) chain { parameters.merge!(other.parameters) } end | 
#min_score(value) ⇒ Chewy::Search::Request
Replaces the value of the min_score request part.
| 534 535 536 537 538 | # File 'lib/chewy/search/request.rb', line 534 %i[request_cache search_type preference timeout limit offset terminate_after min_score ignore_unavailable collapse knn].each do |name| define_method name do |value| modify(name) { replace!(value) } end end | 
#none(value = true) ⇒ Chewy::Search::Request
Enables NullObject pattern for the request, doesn't perform the
request, #hits are empty, #total is 0, etc.
| 404 405 406 407 408 | # File 'lib/chewy/search/request.rb', line 404 %i[track_scores track_total_hits explain version profile none].each do |name| define_method name do |value = true| modify(name) { replace!(value) } end end | 
#not(other) ⇒ Chewy::Search::Request
Takes query, filter, post_filter from the passed scope
and performs QueryProxy#not operation for each
of them. Unlike merge, every other parameter is kept unmerged
(values from the first scope are used in the result scope).
| 814 815 816 817 818 819 820 | # File 'lib/chewy/search/request.rb', line 814 %i[and or not].each do |name| define_method name do |other| %i[query filter post_filter].inject(self) do |scope, parameter_name| scope.send(parameter_name).send(name, other.parameters[parameter_name].value) end end end | 
#offset(value) ⇒ Chewy::Search::Request
Replaces the value of the from request part.
| 534 535 536 537 538 | # File 'lib/chewy/search/request.rb', line 534 %i[request_cache search_type preference timeout limit offset terminate_after min_score ignore_unavailable collapse knn].each do |name| define_method name do |value| modify(name) { replace!(value) } end end | 
#only(*values) ⇒ Chewy::Search::Request
Returns a new scope containing only specified storages.
| 829 830 831 | # File 'lib/chewy/search/request.rb', line 829 def only(*values) chain { parameters.only!(values.flatten(1) + [:indices]) } end | 
#or(other) ⇒ Chewy::Search::Request
Takes query, filter, post_filter from the passed scope
and performs QueryProxy#or operation for each
of them. Unlike merge, every other parameter is kept unmerged
(values from the first scope are used in the result scope).
| 814 815 816 817 818 819 820 | # File 'lib/chewy/search/request.rb', line 814 %i[and or not].each do |name| define_method name do |other| %i[query filter post_filter].inject(self) do |scope, parameter_name| scope.send(parameter_name).send(name, other.parameters[parameter_name].value) end end end | 
#order(*values) ⇒ Chewy::Search::Request
Modifies sort request parameter. Updates the storage on every call.
| 292 293 294 295 296 | # File 'lib/chewy/search/request.rb', line 292 %i[order docvalue_fields].each do |name| define_method name do |value, *values| modify(name) { update!([value, *values]) } end end | 
#parameters ⇒ Chewy::Search::Parameters
Underlying parameter storage collection.
| 76 77 78 | # File 'lib/chewy/search/request.rb', line 76 def parameters @parameters ||= Parameters.new end | 
#performed? ⇒ true, false
Returns whether or not the query has been performed.
| 1001 1002 1003 | # File 'lib/chewy/search/request.rb', line 1001 def performed? !@response.nil? end | 
#pluck(field) ⇒ Array<Object> #pluck(*fields) ⇒ Array<Array<Object>>
Returns and array of values for specified fields.
Uses source to restrict the list of returned fields.
Fields _id, _type, _routing and _index are also supported.
| 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 | # File 'lib/chewy/search/request.rb', line 952 def pluck(*fields) fields = fields.flatten(1).reject(&:blank?).map(&:to_s) source_fields = fields - EVERFIELDS scope = except(FIELD_STORAGES, EXTRA_STORAGES) .source(source_fields.presence || false) hits = raw_limit_value ? scope.hits : scope.scroll_hits(batch_size: DEFAULT_PLUCK_BATCH_SIZE) hits.map do |hit| if fields.one? fetch_field(hit, fields.first) else fields.map do |field| fetch_field(hit, field) end end end end | 
#post_filter(query_hash) ⇒ Chewy::Search::Request #post_filter { ... } ⇒ Chewy::Search::Request #post_filter ⇒ Chewy::Search::QueryProxy
Adds post_filter parameter to the search request body.
| 261 262 263 264 265 266 267 268 269 | # File 'lib/chewy/search/request.rb', line 261 %i[query filter post_filter].each do |name| define_method name do |query_hash = UNDEFINED, &block| if block || query_hash != UNDEFINED modify(name) { must(block || query_hash) } else Chewy::Search::QueryProxy.new(name, self) end end end | 
#preference(value) ⇒ Chewy::Search::Request
Replaces the value of the preference request part.
| 534 535 536 537 538 | # File 'lib/chewy/search/request.rb', line 534 %i[request_cache search_type preference timeout limit offset terminate_after min_score ignore_unavailable collapse knn].each do |name| define_method name do |value| modify(name) { replace!(value) } end end | 
#profile(value = true) ⇒ Chewy::Search::Request
Replaces the value of the profile parameter with the provided value.
| 404 405 406 407 408 | # File 'lib/chewy/search/request.rb', line 404 %i[track_scores track_total_hits explain version profile none].each do |name| define_method name do |value = true| modify(name) { replace!(value) } end end | 
#query(query_hash) ⇒ Chewy::Search::Request #query { ... } ⇒ Chewy::Search::Request #query ⇒ Chewy::Search::QueryProxy
Adds query parameter to the search request body.
| 261 262 263 264 265 266 267 268 269 | # File 'lib/chewy/search/request.rb', line 261 %i[query filter post_filter].each do |name| define_method name do |query_hash = UNDEFINED, &block| if block || query_hash != UNDEFINED modify(name) { must(block || query_hash) } else Chewy::Search::QueryProxy.new(name, self) end end end | 
#render ⇒ Hash
ES request body
| 120 121 122 | # File 'lib/chewy/search/request.rb', line 120 def render @render ||= parameters.render end | 
#reorder(*values) ⇒ Chewy::Search::Request
| 322 323 324 | # File 'lib/chewy/search/request.rb', line 322 def reorder(value, *values) modify(:order) { replace!([value, *values]) } end | 
#request_cache(value) ⇒ Chewy::Search::Request
Replaces the value of the request_cache parameter with the provided value.
Unlike other boolean fields, the value have to be specified explicitly
since it overrides the index-level setting.
| 534 535 536 537 538 | # File 'lib/chewy/search/request.rb', line 534 %i[request_cache search_type preference timeout limit offset terminate_after min_score ignore_unavailable collapse knn].each do |name| define_method name do |value| modify(name) { replace!(value) } end end | 
#rescore(value) ⇒ Chewy::Search::Request
Add a rescore part to the request. Further
call values are added to the storage array.
| 659 660 661 662 663 | # File 'lib/chewy/search/request.rb', line 659 %i[script_fields indices_boost rescore highlight].each do |name| define_method name do |value| modify(name) { update!(value) } end end | 
#response ⇒ Chewy::Search::Response
Access to ES response wrappers providing useful methods such as Chewy::Search::Response#total or Chewy::Search::Response#max_score.
| 104 105 106 | # File 'lib/chewy/search/request.rb', line 104 def response @response ||= build_response(perform) end | 
#response=(from_elasticsearch) ⇒ Object
Wraps and sets the raw Elasticsearch response to provide access to convenience methods.
| 113 114 115 | # File 'lib/chewy/search/request.rb', line 113 def response=(from_elasticsearch) @response = build_response(from_elasticsearch) end | 
#script_fields(value) ⇒ Chewy::Search::Request
Add a script_fields part to the request. Further
call values are merged to the storage hash.
| 659 660 661 662 663 | # File 'lib/chewy/search/request.rb', line 659 %i[script_fields indices_boost rescore highlight].each do |name| define_method name do |value| modify(name) { update!(value) } end end | 
#search_after(*values) ⇒ Chewy::Search::Request
Replaces the storage value for search_after request part.
| 584 585 586 | # File 'lib/chewy/search/request.rb', line 584 def search_after(value, *values) modify(:search_after) { replace!(values.empty? ? value : [value, *values]) } end | 
#search_type(value) ⇒ Chewy::Search::Request
Replaces the value of the search_type request part.
| 534 535 536 537 538 | # File 'lib/chewy/search/request.rb', line 534 %i[request_cache search_type preference timeout limit offset terminate_after min_score ignore_unavailable collapse knn].each do |name| define_method name do |value| modify(name) { replace!(value) } end end | 
#source(*values) ⇒ Chewy::Search::Request
Updates _source request part. Accepts either an array
of field names/templates or a hash with includes and excludes
keys. Source also can be disabled entirely or enabled again.
| 568 569 570 571 572 | # File 'lib/chewy/search/request.rb', line 568 %i[source stored_fields].each do |name| define_method name do |value, *values| modify(name) { update!(values.empty? ? value : [value, *values]) } end end | 
#stored_fields(*values) ⇒ Chewy::Search::Request
Updates stored_fields request part. Accepts an array of field
names. Can be entirely disabled and enabled back.
| 568 569 570 571 572 | # File 'lib/chewy/search/request.rb', line 568 %i[source stored_fields].each do |name| define_method name do |value, *values| modify(name) { update!(values.empty? ? value : [value, *values]) } end end | 
#suggest(value) ⇒ Chewy::Search::Request #suggest ⇒ Hash
A dual-purpose method.
| 691 692 693 694 695 696 697 | # File 'lib/chewy/search/request.rb', line 691 def suggest(value = UNDEFINED) if value == UNDEFINED response.suggest else modify(:suggest) { update!(value) } end end | 
#terminate_after(value) ⇒ Chewy::Search::Request
Replaces the value of the terminate_after request part.
| 534 535 536 537 538 | # File 'lib/chewy/search/request.rb', line 534 %i[request_cache search_type preference timeout limit offset terminate_after min_score ignore_unavailable collapse knn].each do |name| define_method name do |value| modify(name) { replace!(value) } end end | 
#timeout(value) ⇒ Chewy::Search::Request
Replaces the value of the timeout request part.
| 534 535 536 537 538 | # File 'lib/chewy/search/request.rb', line 534 %i[request_cache search_type preference timeout limit offset terminate_after min_score ignore_unavailable collapse knn].each do |name| define_method name do |value| modify(name) { replace!(value) } end end | 
#track_scores(value = true) ⇒ Chewy::Search::Request
Replaces the value of the track_scores parameter with the provided value.
| 404 405 406 407 408 | # File 'lib/chewy/search/request.rb', line 404 %i[track_scores track_total_hits explain version profile none].each do |name| define_method name do |value = true| modify(name) { replace!(value) } end end | 
#track_total_hits(value = true) ⇒ Chewy::Search::Request
Replaces the value of the track_total_hits parameter with the provided value.
| 404 405 406 407 408 | # File 'lib/chewy/search/request.rb', line 404 %i[track_scores track_total_hits explain version profile none].each do |name| define_method name do |value = true| modify(name) { replace!(value) } end end | 
#version(value = true) ⇒ Chewy::Search::Request
Replaces the value of the version parameter with the provided value.
| 404 405 406 407 408 | # File 'lib/chewy/search/request.rb', line 404 %i[track_scores track_total_hits explain version profile none].each do |name| define_method name do |value = true| modify(name) { replace!(value) } end end |