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 runtime_mappings 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 ‘collapse` request part.
-
#docvalue_fields(*values) ⇒ Chewy::Search::Request
Modifies ‘docvalue_fields` request parameter.
-
#explain(value = true) ⇒ Chewy::Search::Request
Replaces the value of the ‘explain` parameter with the provided value.
-
#filter(query_hash = nil, &block) ⇒ Chewy::Search::Request, Chewy::Search::QueryProxy
Adds ‘filter` context of the `query` parameter at the search request body.
-
#highlight(value) ⇒ Chewy::Search::Request
Add a ‘highlight` configuration to the request.
-
#ignore_unavailable(value) ⇒ Chewy::Search::Request
Replaces the value of the ‘ignore_unavailable` request part.
-
#indices(value, *values) ⇒ Chewy::Search::Request
Modifies ‘index` request parameter.
-
#indices_boost(value) ⇒ Chewy::Search::Request
Add an ‘indices_boost` part to the request.
-
#knn(value) ⇒ Chewy::Search::Request
Replaces the value of the ‘knn` request part.
-
#limit(value) ⇒ Chewy::Search::Request
Replaces the value of the ‘size` request part.
-
#load(options = nil) ⇒ Object
Stores ORM/ODM objects loading options.
-
#min_score(value) ⇒ Chewy::Search::Request
Replaces the value of the ‘min_score` request part.
-
#none(value = true) ⇒ Chewy::Search::Request
Enables ‘NullObject` pattern for the request, doesn’t perform the request, ‘#hits` are empty, `#total` is 0, etc.
-
#offset(value) ⇒ Chewy::Search::Request
Replaces the value of the ‘from` request part.
-
#order(*values) ⇒ Chewy::Search::Request
Modifies ‘sort` request parameter.
-
#post_filter(query_hash = nil, &block) ⇒ Chewy::Search::Request, Chewy::Search::QueryProxy
Adds ‘post_filter` parameter to the search request body.
-
#preference(value) ⇒ Chewy::Search::Request
Replaces the value of the ‘preference` request part.
-
#profile(value = true) ⇒ Chewy::Search::Request
Replaces the value of the ‘profile` parameter with the provided value.
-
#query(query_hash = nil, &block) ⇒ Chewy::Search::Request, Chewy::Search::QueryProxy
Adds ‘query` parameter to the search request body.
-
#reorder(*values) ⇒ Chewy::Search::Request
Replaces the value of the ‘sort` parameter with the provided value.
-
#request_cache(value) ⇒ Chewy::Search::Request
Replaces the value of the ‘request_cache` parameter with the provided value.
-
#rescore(value) ⇒ Chewy::Search::Request
Add a ‘rescore` part to the request.
-
#runtime_mappings(value) ⇒ Chewy::Search::Request
Add a ‘runtime_mappings` part to the request.
-
#script_fields(value) ⇒ Chewy::Search::Request
Add a ‘script_fields` part to the request.
-
#search_after(*values) ⇒ Chewy::Search::Request
Replaces the storage value for ‘search_after` request part.
-
#search_type(value) ⇒ Chewy::Search::Request
Replaces the value of the ‘search_type` request part.
-
#source(*values) ⇒ Chewy::Search::Request
Updates ‘_source` request part.
-
#stored_fields(*values) ⇒ Chewy::Search::Request
Updates ‘stored_fields` request part.
-
#suggest(value = UNDEFINED) ⇒ Object
A dual-purpose method.
-
#terminate_after(value) ⇒ Chewy::Search::Request
Replaces the value of the ‘terminate_after` request part.
-
#timeout(value) ⇒ Chewy::Search::Request
Replaces the value of the ‘timeout` request part.
-
#track_scores(value = true) ⇒ Chewy::Search::Request
Replaces the value of the ‘track_scores` parameter with the provided value.
-
#track_total_hits(value = true) ⇒ Chewy::Search::Request
Replaces the value of the ‘track_total_hits` parameter with the provided value.
-
#version(value = true) ⇒ Chewy::Search::Request
Replaces the value of the ‘version` parameter with the provided value.
Scopes manipulation collapse
-
#and(other) ⇒ Chewy::Search::Request
Takes ‘query`, `filter`, `post_filter` from 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_filter` from 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_filter` from 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.
741 742 743 744 745 746 747 |
# File 'lib/chewy/search/request.rb', line 741 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).
830 831 832 833 834 835 836 |
# File 'lib/chewy/search/request.rb', line 830 %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.
867 868 869 870 871 872 873 874 875 |
# File 'lib/chewy/search/request.rb', line 867 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.
999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 |
# File 'lib/chewy/search/request.rb', line 999 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.
856 857 858 |
# File 'lib/chewy/search/request.rb', line 856 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.
882 883 884 885 886 887 888 |
# File 'lib/chewy/search/request.rb', line 882 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.
934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 |
# File 'lib/chewy/search/request.rb', line 934 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.
907 908 909 910 911 912 913 914 915 916 |
# File 'lib/chewy/search/request.rb', line 907 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.
675 676 677 678 679 |
# File 'lib/chewy/search/request.rb', line 675 %i[script_fields indices_boost rescore highlight runtime_mappings].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.
675 676 677 678 679 |
# File 'lib/chewy/search/request.rb', line 675 %i[script_fields indices_boost rescore highlight runtime_mappings].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.
764 765 766 |
# File 'lib/chewy/search/request.rb', line 764 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).
830 831 832 833 834 835 836 |
# File 'lib/chewy/search/request.rb', line 830 %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.
845 846 847 |
# File 'lib/chewy/search/request.rb', line 845 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).
830 831 832 833 834 835 836 |
# File 'lib/chewy/search/request.rb', line 830 %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.
1017 1018 1019 |
# File 'lib/chewy/search/request.rb', line 1017 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.
968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 |
# File 'lib/chewy/search/request.rb', line 968 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.
675 676 677 678 679 |
# File 'lib/chewy/search/request.rb', line 675 %i[script_fields indices_boost rescore highlight runtime_mappings].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 |
#runtime_mappings(value) ⇒ Chewy::Search::Request
Add a ‘runtime_mappings` part to the request. Further call values are merged to the storage hash.
675 676 677 678 679 |
# File 'lib/chewy/search/request.rb', line 675 %i[script_fields indices_boost rescore highlight runtime_mappings].each do |name| define_method name do |value| modify(name) { update!(value) } end end |
#script_fields(value) ⇒ Chewy::Search::Request
Add a ‘script_fields` part to the request. Further call values are merged to the storage hash.
675 676 677 678 679 |
# File 'lib/chewy/search/request.rb', line 675 %i[script_fields indices_boost rescore highlight runtime_mappings].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.
707 708 709 710 711 712 713 |
# File 'lib/chewy/search/request.rb', line 707 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 |