スパンマルチタームクエリ
span_multi
クエリは、multi term query
(ワイルドカード、ファジー、プレフィックス、範囲、または正規表現クエリのいずれか) を span query
としてラップすることを可能にし、ネストできるようにします。例:
Python
resp = client.search(
query={
"span_multi": {
"match": {
"prefix": {
"user.id": {
"value": "ki"
}
}
}
}
},
)
print(resp)
Ruby
response = client.search(
body: {
query: {
span_multi: {
match: {
prefix: {
'user.id' => {
value: 'ki'
}
}
}
}
}
}
)
puts response
Js
const response = await client.search({
query: {
span_multi: {
match: {
prefix: {
"user.id": {
value: "ki",
},
},
},
},
},
});
console.log(response);
コンソール
GET /_search
{
"query": {
"span_multi": {
"match": {
"prefix": { "user.id": { "value": "ki" } }
}
}
}
}
クエリに関連付けられるブーストもあります:
Python
resp = client.search(
query={
"span_multi": {
"match": {
"prefix": {
"user.id": {
"value": "ki",
"boost": 1.08
}
}
}
}
},
)
print(resp)
Ruby
response = client.search(
body: {
query: {
span_multi: {
match: {
prefix: {
'user.id' => {
value: 'ki',
boost: 1.08
}
}
}
}
}
}
)
puts response
Js
const response = await client.search({
query: {
span_multi: {
match: {
prefix: {
"user.id": {
value: "ki",
boost: 1.08,
},
},
},
},
},
});
console.log(response);
コンソール
GET /_search
{
"query": {
"span_multi": {
"match": {
"prefix": { "user.id": { "value": "ki", "boost": 1.08 } }
}
}
}
}
span_multi
クエリは、クエリに一致するタームの数が indices.query.bool.max_clause_count
検索設定 を超えると、あまりにも多くのクローズ失敗に直面します。無制限の拡張を避けるために、マルチタームクエリの リライト方法 を top_terms_*
リライトに設定できます。また、span_multi
を prefix
クエリのみに使用する場合は、text
フィールドの index_prefixes
フィールドオプションを有効にできます。これにより、フィールド上の任意のプレフィックスクエリがインデックスされたプレフィックスに一致する単一のタームクエリにリライトされます。