マルチ検索テンプレートAPI

単一のリクエストで複数のテンプレート検索を実行します。

Python

  1. resp = client.msearch_template(
  2. index="my-index",
  3. search_templates=[
  4. {},
  5. {
  6. "id": "my-search-template",
  7. "params": {
  8. "query_string": "hello world",
  9. "from": 0,
  10. "size": 10
  11. }
  12. },
  13. {},
  14. {
  15. "id": "my-other-search-template",
  16. "params": {
  17. "query_type": "match_all"
  18. }
  19. }
  20. ],
  21. )
  22. print(resp)

Ruby

  1. response = client.msearch_template(
  2. index: 'my-index',
  3. body: [
  4. {},
  5. {
  6. id: 'my-search-template',
  7. params: {
  8. query_string: 'hello world',
  9. from: 0,
  10. size: 10
  11. }
  12. },
  13. {},
  14. {
  15. id: 'my-other-search-template',
  16. params: {
  17. query_type: 'match_all'
  18. }
  19. }
  20. ]
  21. )
  22. puts response

Js

  1. const response = await client.msearchTemplate({
  2. index: "my-index",
  3. search_templates: [
  4. {},
  5. {
  6. id: "my-search-template",
  7. params: {
  8. query_string: "hello world",
  9. from: 0,
  10. size: 10,
  11. },
  12. },
  13. {},
  14. {
  15. id: "my-other-search-template",
  16. params: {
  17. query_type: "match_all",
  18. },
  19. },
  20. ],
  21. });
  22. console.log(response);

コンソール

  1. GET my-index/_msearch/template
  2. { }
  3. { "id": "my-search-template", "params": { "query_string": "hello world", "from": 0, "size": 10 }}
  4. { }
  5. { "id": "my-other-search-template", "params": { "query_type": "match_all" }}

リクエスト

GET <target>/_msearch/template

GET _msearch/template

POST <target>/_msearch/template

POST _msearch/template

前提条件

  • Elasticsearchのセキュリティ機能が有効になっている場合、ターゲットデータストリーム、インデックス、またはエイリアスに対してread インデックス権限を持っている必要があります。クロスクラスタ検索については、リモートクラスタを参照してください。

パスパラメータ

  • <target>
  • (オプション、文字列)検索するデータストリーム、インデックス、およびエイリアスのカンマ区切りリスト。ワイルドカード(*)をサポートします。すべてのデータストリームとインデックスを検索するには、このパラメータを省略するか、*を使用します。

クエリパラメータ

  • ccs_minimize_roundtrips
  • (オプション、ブール値)trueの場合、クロスクラスタ検索リクエストのネットワーク往復が最小限に抑えられます。デフォルトはtrueです。
  • max_concurrent_searches
  • (オプション、整数)APIが実行できる同時検索の最大数。デフォルトはmax(1, (# of data nodes * min(search thread pool size, 10)))です。
  • rest_total_hits_as_int
  • (オプション、ブール値)trueの場合、レスポンスはhits.totalを整数として返します。falseの場合、hits.totalをオブジェクトとして返します。デフォルトはfalseです。
  • search_type
  • (オプション、文字列)検索操作のタイプ。利用可能なオプション:
    • query_then_fetch
    • dfs_query_then_fetch
  • typed_keys
  • (オプション、ブール値)trueの場合、レスポンスは集約とサジェスターの名前をそれぞれのタイプでプレフィックスします。デフォルトはfalseです。

リクエストボディ

リクエストボディは、次の形式の改行区切りJSON(NDJSON)でなければなりません:

Js

  1. <header>\n
  2. <body>\n
  3. <header>\n
  4. <body>\n

<header><body>のペアは検索リクエストを表します。

<header>multi search API<header>と同じパラメータをサポートします。<body>search template APIのリクエストボディと同じパラメータをサポートします。

  • <header>
  • (必須、オブジェクト)検索を制限または変更するために使用されるパラメータ。
    このオブジェクトは各検索ボディに必要ですが、空({})または空行にすることができます。
    1. - `````allow_no_indices
    • (オプション、ブール値)trueの場合、リクエストはワイルドカード式または_allの値が欠落または閉じたインデックスのみを取得した場合にエラーを返しません。
      このパラメータは、欠落またはインデックスを指すエイリアスにも適用されます。
    • expand_wildcards
    • (オプション、文字列)ワイルドカードパターンが一致できるインデックスのタイプ。リクエストがデータストリームをターゲットにできる場合、この引数はワイルドカード式が隠れたデータストリームに一致するかどうかを決定します。カンマ区切りの値(open,hiddenなど)をサポートします。有効な値は:
      • all
      • すべてのデータストリームまたはインデックスに一致し、隠れたものも含まれます。
      • open
      • 開いている非隠れたインデックスに一致します。また、非隠れたデータストリームにも一致します。
      • closed
      • 閉じた非隠れたインデックスに一致します。また、非隠れたデータストリームにも一致します。データストリームは閉じることができません。
      • hidden
      • 隠れたデータストリームと隠れたインデックスに一致します。openclosed、またはその両方と組み合わせる必要があります。
      • none
      • ワイルドカードパターンは受け付けられません。
        デフォルトはopenです。
    • ignore_unavailable
    • (オプション、ブール値)trueの場合、欠落または閉じたインデックスからのドキュメントはレスポンスに含まれません。デフォルトはfalseです。
    • index
    • (オプション、文字列または文字列の配列)検索するデータストリーム、インデックス、およびエイリアス。ワイルドカード(*)をサポートします。複数のターゲットを配列として指定します。
      このパラメータが指定されていない場合、<target>リクエストパスパラメータがフォールバックとして使用されます。
    • preference
    • (オプション、文字列)検索を実行するために使用されるノードまたはシャード。デフォルトはランダムです。
    • request_cache
    • (オプション、ブール値)trueの場合、リクエストキャッシュはこの検索に使用できます。デフォルトはインデックスレベルの設定です。シャードリクエストキャッシュ設定を参照してください。
    • routing
    • (オプション、文字列)検索操作を特定のシャードにルーティングするために使用されるカスタムルーティング値
    • search_type
    • (オプション、文字列)返されたドキュメントのスコアリング時にグローバルな用語とドキュメントの頻度を使用するかどうかを示します。
      オプションは:
      • query_then_fetch
      • (デフォルト)ドキュメントはシャードのローカルな用語とドキュメントの頻度を使用してスコアリングされます。これは通常は速いですが、正確さに欠けます。
      • dfs_query_then_fetch
      • ドキュメントはすべてのシャードにわたるグローバルな用語とドキュメントの頻度を使用してスコアリングされます。これは通常は遅いですが、より正確です。
  • <body>
  • (リクエスト、オブジェクト)検索のためのパラメータ。
    • explain
    • (オプション、ブール値)trueの場合、各ヒットの一部としてスコア計算に関する詳細情報を返します。デフォルトはfalseです。
    • id
    • (必須*、文字列)使用する検索テンプレートのID。sourceが指定されていない場合、このパラメータは必須です。
    • params
    • (オプション、オブジェクト)テンプレート内のMustache変数を置き換えるために使用されるキーと値のペア。キーは変数名です。値は変数の値です。
    • profile
    • (オプション、ブール値)trueの場合、クエリの実行がプロファイルされます。デフォルトはfalseです。
    • source
    • (必須*、オブジェクト)インライン検索テンプレート。 search APIのリクエストボディと同じパラメータをサポートします。また、Mustache変数もサポートします。
      idが指定されていない場合、このパラメータは必須です。

レスポンスコード

APIは、リクエスト自体が失敗した場合にのみ400ステータスコードを返します。リクエスト内の1つ以上の検索が失敗した場合、APIはレスポンス内の各失敗した検索に対して200ステータスコードとerrorオブジェクトを返します。

レスポンスボディ

  • responses
  • (オブジェクトの配列)提出された順序で返される各検索の結果。各オブジェクトはsearch APIのレスポンスと同じプロパティを使用します。
    検索が失敗した場合、レスポンスにはエラーメッセージを含むerrorオブジェクトが含まれます。

curlリクエスト

提供されたテキストファイルまたはテキスト入力をcurlに使用する場合、改行を保持するために--data-binaryフラグを-dの代わりに使用します。

  1. $ cat requests
  2. { "index": "my-index" }
  3. { "id": "my-search-template", "params": { "query_string": "hello world", "from": 0, "size": 10 }}
  4. { "index": "my-other-index" }
  5. { "id": "my-other-search-template", "params": { "query_type": "match_all" }}
  6. $ curl -H "Content-Type: application/x-ndjson" -XGET localhost:9200/_msearch/template --data-binary "@requests"; echo