in opensearch-api/lib/opensearch/api/actions/msearch.rb [49:96]
def msearch(arguments = {})
raise ArgumentError, "Required argument 'body' missing" unless arguments[:body]
headers = arguments.delete(:headers) || {}
arguments = arguments.clone
_index = arguments.delete(:index)
_type = arguments.delete(:type)
method = OpenSearch::API::HTTP_POST
path = if _index && _type
"#{Utils.__listify(_index)}/#{Utils.__listify(_type)}/_msearch"
elsif _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|
meta = item
data = meta.delete(:search)
sum << meta
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