プレフィックスクエリ
特定のフィールドに特定のプレフィックスを含むドキュメントを返します。
リクエストの例
次の検索は、user.id
フィールドにki
で始まる用語が含まれるドキュメントを返します。
Python
resp = client.search(
query={
"prefix": {
"user.id": {
"value": "ki"
}
}
},
)
print(resp)
Ruby
response = client.search(
body: {
query: {
prefix: {
'user.id' => {
value: 'ki'
}
}
}
}
)
puts response
Js
const response = await client.search({
query: {
prefix: {
"user.id": {
value: "ki",
},
},
},
});
console.log(response);
コンソール
GET /_search
{
"query": {
"prefix": {
"user.id": {
"value": "ki"
}
}
}
}
プレフィックスのトップレベルパラメータ
<field>
- (必須、オブジェクト) 検索したいフィールド。
のパラメータ
value
- (必須、文字列) 提供された
<field>
内で見つけたい用語の先頭文字。 rewrite
- (オプション、文字列) クエリを再構築するために使用されるメソッド。有効な値と詳細については、
rewrite
パラメータを参照してください。 case_insensitive
[7.10.0] 7.10.0で追加されました。- (オプション、ブール値) trueに設定すると、インデックスフィールドの値とのASCII大文字小文字を区別しない一致を許可します。デフォルトはfalseで、これは一致の大文字小文字の区別が基になるフィールドのマッピングに依存することを意味します。
ノート
短いリクエストの例
#### Python
``````python
resp = client.search(
query={
"prefix": {
"user": "ki"
}
},
)
print(resp)
`
Ruby
response = client.search(
body: {
query: {
prefix: {
user: 'ki'
}
}
}
)
puts response
Js
const response = await client.search({
query: {
prefix: {
user: "ki",
},
},
});
console.log(response);
コンソール
GET /_search
{
"query": {
"prefix" : { "user" : "ki" }
}
}
プレフィックスクエリの高速化
index_prefixes
マッピングパラメータを使用してプレフィックスクエリを高速化できます。これを有効にすると、Elasticsearchは設定に従って別のフィールドにプレフィックスをインデックスします。これにより、Elasticsearchはより効率的にプレフィックスクエリを実行できますが、インデックスが大きくなります。
高コストクエリを許可する
search.allow_expensive_queries
がfalseに設定されている場合、プレフィックスクエリは実行されません。ただし、index_prefixes
が有効になっている場合、最適化されたクエリが構築され、遅いとは見なされず、この設定にもかかわらず実行されます。