Regexp query
正規表現に一致する用語を含む文書を返します。
正規表現は、オペレーターと呼ばれるプレースホルダー文字を使用してデータ内のパターンを一致させる方法です。 regexp
クエリでサポートされているオペレーターのリストについては、正規表現の構文を参照してください。
Example request
次の検索は、user.id
フィールドが k
で始まり y
で終わる任意の用語を含む文書を返します。 .*
オペレーターは、文字数に関係なく、文字を一致させます。 一致する用語には、ky
、kay
、kimchy
が含まれる場合があります。
Python
resp = client.search(
query={
"regexp": {
"user.id": {
"value": "k.*y",
"flags": "ALL",
"case_insensitive": True,
"max_determinized_states": 10000,
"rewrite": "constant_score_blended"
}
}
},
)
print(resp)
Ruby
response = client.search(
body: {
query: {
regexp: {
'user.id' => {
value: 'k.*y',
flags: 'ALL',
case_insensitive: true,
max_determinized_states: 10_000,
rewrite: 'constant_score_blended'
}
}
}
}
)
puts response
Js
const response = await client.search({
query: {
regexp: {
"user.id": {
value: "k.*y",
flags: "ALL",
case_insensitive: true,
max_determinized_states: 10000,
rewrite: "constant_score_blended",
},
},
},
});
console.log(response);
Console
GET /_search
{
"query": {
"regexp": {
"user.id": {
"value": "k.*y",
"flags": "ALL",
"case_insensitive": true,
"max_determinized_states": 10000,
"rewrite": "constant_score_blended"
}
}
}
}
Top-level parameters for regexp
<field>
- (必須、オブジェクト) 検索したいフィールド。
Parameters for
value
- (必須、文字列) 提供された
<field>
で見つけたい用語の正規表現。サポートされているオペレーターのリストについては、正規表現の構文を参照してください。
デフォルトでは、正規表現は1,000文字に制限されています。この制限は、index.max_regex_length
設定を使用して変更できます。regexp
クエリのパフォーマンスは、提供された正規表現に基づいて変動する可能性があります。パフォーマンスを向上させるために、プレフィックスやサフィックスなしで.*
や.*?+
のようなワイルドカードパターンの使用を避けてください。 flags
- (オプション、文字列) 正規表現のためのオプションオペレーターを有効にします。有効な値と詳細については、正規表現の構文を参照してください。
case_insensitive
[7.10.0] 7.10.0で追加されました。- (オプション、Boolean) true に設定すると、正規表現の値とインデックスされたフィールド値の大文字と小文字を区別しない一致を許可します。デフォルトは false で、これは一致の大文字と小文字の区別が基になるフィールドのマッピングに依存することを意味します。
max_determinized_states
- (オプション、整数) クエリに必要な オートマトン状態 の最大数。デフォルトは
10000
です。
Elasticsearch は、正規表現を解析するために内部で Apache Lucene を使用します。Lucene は、各正規表現を決定化された状態の数を含む有限オートマトンに変換します。
このパラメータを使用して、変換が意図せずにリソースを過剰に消費するのを防ぐことができます。複雑な正規表現を実行するには、この制限を増やす必要がある場合があります。 rewrite
- (オプション、文字列) クエリを再構築するために使用されるメソッド。有効な値と詳細については、
rewrite
パラメータを参照してください。
Notes
Allow expensive queries
search.allow_expensive_queries
が false に設定されている場合、正規表現クエリは実行されません。