Class: 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].freeze
- DELEGATED_METHODS =
i[ query filter post_filter order reorder docvalue_fields track_scores 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 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 ].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 none types min_score rescore indices_boost ].freeze
Chainable request modificators collapse
-
#aggs(value = UNDEFINED) ⇒ Object
(also: #aggregations)
A dual-purpose method.
-
#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
filtecontext of thequerparameter at the search request body. -
#highlight(value) ⇒ Chewy::Search::Request
Add a
highlightconfiguration to the request. -
#indices(*values) ⇒ Chewy::Search::Request
Modifies
indexrequest parameter. -
#indices_boost(value) ⇒ Chewy::Search::Request
Add an
indices_boostpart to the request. -
#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
querparameter 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. -
#types(*values) ⇒ Chewy::Search::Request
Modifies
typerequest parameter. -
#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) ⇒ Hash
Deletes all the documents from the specified scope it uses
delete_by_query. -
#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(*indices_or_types) ⇒ Request
constructor
The class is initialized with the list of chewy indexes and/or types, 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(*indices_or_types) ⇒ Request
The class is initialized with the list of chewy indexes and/or types, which are later used to compose requests. Any symbol/string passed is treated as an index identifier.
69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/chewy/search/request.rb', line 69 def initialize(*indices_or_types) indices = indices_or_types.reject do |klass| klass.is_a?(Class) && klass < Chewy::Type end types = indices_or_types.select do |klass| klass.is_a?(Class) && klass < Chewy::Type end parameters.modify!(:indices) do replace!(indices: indices, types: types) 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.
105 106 107 |
# File 'lib/chewy/search/request.rb', line 105 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.
705 706 707 708 709 710 711 |
# File 'lib/chewy/search/request.rb', line 705 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).
782 783 784 785 786 787 788 |
# File 'lib/chewy/search/request.rb', line 782 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 |
#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.
819 820 821 822 823 824 825 826 827 |
# File 'lib/chewy/search/request.rb', line 819 def count if performed? total else Chewy.client.count(only(WHERE_STORAGES).render)['count'] end rescue Elasticsearch::Transport::Transport::Errors::NotFound 0 end |
#delete_all(refresh: true) ⇒ Hash
The result hash is different for different API used.
Deletes all the documents from the specified scope it uses
delete_by_query
946 947 948 949 950 951 952 953 |
# File 'lib/chewy/search/request.rb', line 946 def delete_all(refresh: true) request_body = only(WHERE_STORAGES).render.merge(refresh: refresh) 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.
302 303 304 305 306 |
# File 'lib/chewy/search/request.rb', line 302 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.
808 809 810 |
# File 'lib/chewy/search/request.rb', line 808 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.
834 835 836 837 838 839 840 |
# File 'lib/chewy/search/request.rb', line 834 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.
417 418 419 420 421 |
# File 'lib/chewy/search/request.rb', line 417 i[track_scores 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 filte context of the quer parameter at the
search request body.
271 272 273 274 275 276 277 278 279 |
# File 'lib/chewy/search/request.rb', line 271 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::Type #find(*ids) ⇒ Array<Chewy::Type>
Finds documents with specified ids for the current request scope.
886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 |
# File 'lib/chewy/search/request.rb', line 886 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::Type #first(limit) ⇒ Array<Chewy::Type>
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.
859 860 861 862 863 864 865 866 867 868 |
# File 'lib/chewy/search/request.rb', line 859 def first(limit = UNDEFINED) request_limit = limit == UNDEFINED ? 1 : limit if performed? && (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.
639 640 641 642 643 |
# File 'lib/chewy/search/request.rb', line 639 i[script_fields indices_boost rescore highlight].each do |name| define_method name do |value| modify(name) { update!(value) } end end |
#indices(*values) ⇒ Chewy::Search::Request
Modifies index request parameter. Updates the storage on every call.
Added passed indexes to the parameter list.
332 333 334 335 336 |
# File 'lib/chewy/search/request.rb', line 332 i[indices types].each do |name| define_method name do |value, *values| modify(:indices) { update!(name => [value, *values]) } end end |
#indices_boost(value) ⇒ Chewy::Search::Request
Add an indices_boost part to the request. Further
call values are merged to the storage hash.
639 640 641 642 643 |
# File 'lib/chewy/search/request.rb', line 639 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.
137 138 139 |
# File 'lib/chewy/search/request.rb', line 137 def inspect "<#{self.class} #{render}>" end |
#limit(value) ⇒ Chewy::Search::Request
Replaces the value of the size request part.
514 515 516 517 518 |
# File 'lib/chewy/search/request.rb', line 514 i[request_cache search_type preference timeout limit offset terminate_after min_score].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-type or be global, depends on the adapter
loading implementation. Also, there are 2 loading options to select
or exclude types from loading: only and except respectively.
Options are updated on further method calls.
580 581 582 |
# File 'lib/chewy/search/request.rb', line 580 def load( = nil) modify(:load) { update!() } end |
#merge(other) ⇒ Chewy::Search::Request
Merges 2 scopes by merging their parameters.
728 729 730 |
# File 'lib/chewy/search/request.rb', line 728 def merge(other) chain { parameters.merge!(other.parameters) } end |
#min_score(value) ⇒ Chewy::Search::Request
Replaces the value of the min_score request part.
514 515 516 517 518 |
# File 'lib/chewy/search/request.rb', line 514 i[request_cache search_type preference timeout limit offset terminate_after min_score].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.
417 418 419 420 421 |
# File 'lib/chewy/search/request.rb', line 417 i[track_scores 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).
782 783 784 785 786 787 788 |
# File 'lib/chewy/search/request.rb', line 782 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.
514 515 516 517 518 |
# File 'lib/chewy/search/request.rb', line 514 i[request_cache search_type preference timeout limit offset terminate_after min_score].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.
797 798 799 |
# File 'lib/chewy/search/request.rb', line 797 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).
782 783 784 785 786 787 788 |
# File 'lib/chewy/search/request.rb', line 782 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.
302 303 304 305 306 |
# File 'lib/chewy/search/request.rb', line 302 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.
86 87 88 |
# File 'lib/chewy/search/request.rb', line 86 def parameters @parameters ||= Parameters.new end |
#performed? ⇒ true, false
Returns whether or not the query has been performed.
958 959 960 |
# File 'lib/chewy/search/request.rb', line 958 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 and _index are also supported.
920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 |
# File 'lib/chewy/search/request.rb', line 920 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.
271 272 273 274 275 276 277 278 279 |
# File 'lib/chewy/search/request.rb', line 271 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.
514 515 516 517 518 |
# File 'lib/chewy/search/request.rb', line 514 i[request_cache search_type preference timeout limit offset terminate_after min_score].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.
417 418 419 420 421 |
# File 'lib/chewy/search/request.rb', line 417 i[track_scores 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 quer parameter to the search request body.
271 272 273 274 275 276 277 278 279 |
# File 'lib/chewy/search/request.rb', line 271 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
130 131 132 |
# File 'lib/chewy/search/request.rb', line 130 def render @render ||= parameters.render end |
#reorder(*values) ⇒ Chewy::Search::Request
348 349 350 |
# File 'lib/chewy/search/request.rb', line 348 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.
514 515 516 517 518 |
# File 'lib/chewy/search/request.rb', line 514 i[request_cache search_type preference timeout limit offset terminate_after min_score].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.
639 640 641 642 643 |
# File 'lib/chewy/search/request.rb', line 639 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.
114 115 116 |
# File 'lib/chewy/search/request.rb', line 114 def response @response ||= build_response(perform) end |
#response=(from_elasticsearch) ⇒ Object
Wraps and sets the raw Elasticsearch response to provide access to convenience methods.
123 124 125 |
# File 'lib/chewy/search/request.rb', line 123 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.
639 640 641 642 643 |
# File 'lib/chewy/search/request.rb', line 639 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.
564 565 566 |
# File 'lib/chewy/search/request.rb', line 564 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.
514 515 516 517 518 |
# File 'lib/chewy/search/request.rb', line 514 i[request_cache search_type preference timeout limit offset terminate_after min_score].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 entierly or enabled again.
548 549 550 551 552 |
# File 'lib/chewy/search/request.rb', line 548 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 entierly disabled and enabled back.
548 549 550 551 552 |
# File 'lib/chewy/search/request.rb', line 548 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.
671 672 673 674 675 676 677 |
# File 'lib/chewy/search/request.rb', line 671 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.
514 515 516 517 518 |
# File 'lib/chewy/search/request.rb', line 514 i[request_cache search_type preference timeout limit offset terminate_after min_score].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.
514 515 516 517 518 |
# File 'lib/chewy/search/request.rb', line 514 i[request_cache search_type preference timeout limit offset terminate_after min_score].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.
417 418 419 420 421 |
# File 'lib/chewy/search/request.rb', line 417 i[track_scores explain version profile none].each do |name| define_method name do |value = true| modify(name) { replace!(value) } end end |
#types(*values) ⇒ Chewy::Search::Request
Modifies type request parameter. Updates the storage on every call.
Constrains types passed on the request initialization or adds them
to the list depending on circumstances.
332 333 334 335 336 |
# File 'lib/chewy/search/request.rb', line 332 i[indices types].each do |name| define_method name do |value, *values| modify(:indices) { update!(name => [value, *values]) } end end |
#version(value = true) ⇒ Chewy::Search::Request
Replaces the value of the version parameter with the provided value.
417 418 419 420 421 |
# File 'lib/chewy/search/request.rb', line 417 i[track_scores explain version profile none].each do |name| define_method name do |value = true| modify(name) { replace!(value) } end end |