vendor/bundle/jruby/2.3.0/gems/elasticsearch-api-5.0.4/lib/elasticsearch/api/actions/msearch.rb
# Perform multiple search operations in a single request.
#
# Pass the search definitions in the `:body` argument
#
# @example Perform multiple different searches as `:search`
#
#     client.msearch \
#       body: [
#         { search: { query: { match_all: {} } } },
#         { index: 'myindex', type: 'mytype', search: { query: { query_string: { query: '"Test 1"' } } } },
#         { search_type: 'count', search: { aggregations: { published: { terms: { field: 'published' } } } } }
#       ]
#
# @example Perform multiple different searches as an array of meta/data pairs
#
#     client.msearch \
#       body: [
#         { query: { match_all: {} } },
#         { index: 'myindex', type: 'mytype' },
#         { query: { query_string: { query: '"Test 1"' } } },
#         { search_type: 'count' },
#         { aggregations: { published: { terms: { field: 'published' } } } }
#       ]
#
# @option arguments [List] :index A comma-separated list of index names to use as default
# @option arguments [List] :type A comma-separated list of document types to use as default
# @option arguments [Hash] :body The request definitions (metadata-search request definition pairs), separated by newlines (*Required*)
# @option arguments [String] :search_type Search operation type (options: query_then_fetch, query_and_fetch, dfs_query_then_fetch, dfs_query_and_fetch)
# @option arguments [Number] :max_concurrent_searches Controls the maximum number of concurrent searches the multi search api will execute
# @option arguments [Boolean] :typed_keys Specify whether aggregation and suggester names should be prefixed by their respective types in the response
#
# @see https://www.elastic.co/guide/en/elasticsearch/reference/5.x/search-multi-search.html
#
Perform multiple search operations in a single request.
Pass the search definitions in the `:body` argument
Perform multiple search operations in a single request . Pass the search definitions in the ` : body ` argument
def msearch(arguments={})
        raise ArgumentError, "Required argument 'body' missing" unless arguments[:body]
         valid_params = [
          :search_type,
          :max_concurrent_searches,
          :typed_keys ]
        method = HTTP_GET
        path   = Utils.__pathify( Utils.__listify(arguments[:index]), Utils.__listify(arguments[:type]), '_msearch' )
        params = Utils.__validate_and_extract_params arguments, valid_params
        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| Elasticsearch::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 : Elasticsearch::API.serializer.dump(d) }
          payload << "" unless payload.empty?
          payload = payload.join("\n")
        else
          payload = body
        end
        perform_request(method, path, params, payload).body
      end
def msearch ( arguments = { } ) raise ArgumentError , "Required argument 'body' missing" unless arguments [ :body ] valid_params = [ :search_type , :max_concurrent_searches , :typed_keys ] method = HTTP_GET path = Utils . __pathify ( Utils . __listify ( arguments [ :index ] ) , Utils . __listify ( arguments [ :type ] ) , '_msearch' ) params = Utils . __validate_and_extract_params arguments , valid_params 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 | Elasticsearch :: 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 : Elasticsearch :: API . serializer . dump ( d ) } payload << "" unless payload . empty? payload = payload . join ( "\n" ) else payload = body end perform_request ( method , path , params , payload ) . body end
Perform multiple search operations in a single request.
Perform multiple search operations in a single request .
arguments
:typed_keys Specify whether aggregation and suggester names should be prefixed by their respective types in the response
: typed_keys Specify whether aggregation and suggester names should be prefixed by their respective types in the response
example
Perform multiple different searches as `:search` client.msearch \ body: [ { search: { query: { match_all: {} } } }, { index: 'myindex', type: 'mytype', search: { query: { query_string: { query: '"Test 1"' } } } }, { search_type: 'count', search: { aggregations: { published: { terms: { field: 'published' } } } } } ]
Perform multiple different searches as ` : search ` client . msearch \ body : [ { search : { query : { match_all : {} } } } { index : ' myindex ' type : ' mytype ' search : { query : { query_string : { query : ' " Test 1 " ' } } } } { search_type : ' count ' search : { aggregations : { published : { terms : { field : ' published ' } } } } } ]
example
Perform multiple different searches as an array of meta/data pairs client.msearch \ body: [ { query: { match_all: {} } }, { index: 'myindex', type: 'mytype' }, { query: { query_string: { query: '"Test 1"' } } }, { search_type: 'count' }, { aggregations: { published: { terms: { field: 'published' } } } } ]
Perform multiple different searches as an array of meta / data pairs client . msearch \ body : [ { query : { match_all : {} } } { index : ' myindex ' type : ' mytype ' } { query : { query_string : { query : ' " Test 1 " ' } } } { search_type : ' count ' } { aggregations : { published : { terms : { field : ' published ' } } } } ]
see
None