マルチ検索テンプレートAPI
単一のリクエストで複数のテンプレート検索を実行します。
Python
resp = client.msearch_template(
index="my-index",
search_templates=[
{},
{
"id": "my-search-template",
"params": {
"query_string": "hello world",
"from": 0,
"size": 10
}
},
{},
{
"id": "my-other-search-template",
"params": {
"query_type": "match_all"
}
}
],
)
print(resp)
Ruby
response = client.msearch_template(
index: 'my-index',
body: [
{},
{
id: 'my-search-template',
params: {
query_string: 'hello world',
from: 0,
size: 10
}
},
{},
{
id: 'my-other-search-template',
params: {
query_type: 'match_all'
}
}
]
)
puts response
Js
const response = await client.msearchTemplate({
index: "my-index",
search_templates: [
{},
{
id: "my-search-template",
params: {
query_string: "hello world",
from: 0,
size: 10,
},
},
{},
{
id: "my-other-search-template",
params: {
query_type: "match_all",
},
},
],
});
console.log(response);
コンソール
GET my-index/_msearch/template
{ }
{ "id": "my-search-template", "params": { "query_string": "hello world", "from": 0, "size": 10 }}
{ }
{ "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
<header>\n
<body>\n
<header>\n
<body>\n
各<header>
と<body>
のペアは検索リクエストを表します。
<header>
はmulti search APIの<header>
と同じパラメータをサポートします。<body>
はsearch template APIのリクエストボディと同じパラメータをサポートします。
<header>
- (必須、オブジェクト)検索を制限または変更するために使用されるパラメータ。
このオブジェクトは各検索ボディに必要ですが、空({}
)または空行にすることができます。- `````allow_no_indices
- (オプション、ブール値)
true
の場合、リクエストはワイルドカード式または_all
の値が欠落または閉じたインデックスのみを取得した場合にエラーを返しません。
このパラメータは、欠落またはインデックスを指すエイリアスにも適用されます。 expand_wildcards
- (オプション、文字列)ワイルドカードパターンが一致できるインデックスのタイプ。リクエストがデータストリームをターゲットにできる場合、この引数はワイルドカード式が隠れたデータストリームに一致するかどうかを決定します。カンマ区切りの値(
open,hidden
など)をサポートします。有効な値は:all
- すべてのデータストリームまたはインデックスに一致し、隠れたものも含まれます。
open
- 開いている非隠れたインデックスに一致します。また、非隠れたデータストリームにも一致します。
closed
- 閉じた非隠れたインデックスに一致します。また、非隠れたデータストリームにも一致します。データストリームは閉じることができません。
hidden
- 隠れたデータストリームと隠れたインデックスに一致します。
open
、closed
、またはその両方と組み合わせる必要があります。 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
の代わりに使用します。
$ cat requests
{ "index": "my-index" }
{ "id": "my-search-template", "params": { "query_string": "hello world", "from": 0, "size": 10 }}
{ "index": "my-other-index" }
{ "id": "my-other-search-template", "params": { "query_type": "match_all" }}
$ curl -H "Content-Type: application/x-ndjson" -XGET localhost:9200/_msearch/template --data-binary "@requests"; echo