Regexp query

正規表現に一致する用語を含む文書を返します。

正規表現は、オペレーターと呼ばれるプレースホルダー文字を使用してデータ内のパターンを一致させる方法です。 regexp クエリでサポートされているオペレーターのリストについては、正規表現の構文を参照してください。

Example request

次の検索は、user.id フィールドが k で始まり y で終わる任意の用語を含む文書を返します。 .* オペレーターは、文字数に関係なく、文字を一致させます。 一致する用語には、kykaykimchy が含まれる場合があります。

Python

  1. resp = client.search(
  2. query={
  3. "regexp": {
  4. "user.id": {
  5. "value": "k.*y",
  6. "flags": "ALL",
  7. "case_insensitive": True,
  8. "max_determinized_states": 10000,
  9. "rewrite": "constant_score_blended"
  10. }
  11. }
  12. },
  13. )
  14. print(resp)

Ruby

  1. response = client.search(
  2. body: {
  3. query: {
  4. regexp: {
  5. 'user.id' => {
  6. value: 'k.*y',
  7. flags: 'ALL',
  8. case_insensitive: true,
  9. max_determinized_states: 10_000,
  10. rewrite: 'constant_score_blended'
  11. }
  12. }
  13. }
  14. }
  15. )
  16. puts response

Js

  1. const response = await client.search({
  2. query: {
  3. regexp: {
  4. "user.id": {
  5. value: "k.*y",
  6. flags: "ALL",
  7. case_insensitive: true,
  8. max_determinized_states: 10000,
  9. rewrite: "constant_score_blended",
  10. },
  11. },
  12. },
  13. });
  14. console.log(response);

Console

  1. GET /_search
  2. {
  3. "query": {
  4. "regexp": {
  5. "user.id": {
  6. "value": "k.*y",
  7. "flags": "ALL",
  8. "case_insensitive": true,
  9. "max_determinized_states": 10000,
  10. "rewrite": "constant_score_blended"
  11. }
  12. }
  13. }
  14. }

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 に設定されている場合、正規表現クエリは実行されません。