Method: OpenSearch::API::Actions#msearch
- Defined in:
- lib/opensearch/api/actions/msearch.rb
#msearch(arguments = {}) ⇒ Object
Allows to execute several search operations in one request.
*Deprecation notice*: Specifying types in urls has been deprecated Deprecated since version 7.0.0
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/opensearch/api/actions/msearch.rb', line 49 def msearch(arguments = {}) raise ArgumentError, "Required argument 'body' missing" unless arguments[:body] headers = arguments.delete(:headers) || {} arguments = arguments.clone _index = arguments.delete(:index) method = OpenSearch::API::HTTP_POST path = if _index "#{Utils.__listify(_index)}/_msearch" else "_msearch" end params = Utils.__validate_and_extract_params arguments, ParamsRegistry.get(__method__) body = arguments[:body] case when body.is_a?(Array) && body.any? { |d| d.has_key? :search } payload = body .inject([]) do |sum, item| = item data = .delete(:search) sum << sum << data sum end .map { |item| OpenSearch::API.serializer.dump(item) } payload << "" unless payload.empty? payload = payload.join("\n") when body.is_a?(Array) payload = body.map { |d| d.is_a?(String) ? d : OpenSearch::API.serializer.dump(d) } payload << "" unless payload.empty? payload = payload.join("\n") else payload = body end headers.merge!("Content-Type" => "application/x-ndjson") perform_request(method, path, params, payload, headers).body end |