| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | [[query-dsl-regexp-query]]=== Regexp QueryThe `regexp` query allows you to use regular expression term queries.See <<regexp-syntax>> for details of the supported regular expression language.The "term queries" in that first sentence means that Elasticsearch will applythe regexp to the terms produced by the tokenizer for that field, and notto the original text of the field.*Note*: The performance of a `regexp` query heavily depends on theregular expression chosen. Matching everything like `.*` is very slow aswell as using lookaround regular expressions. If possible, you shouldtry to use a long prefix before your regular expression starts. Wildcardmatchers like `.*?+` will mostly lower performance.[source,js]--------------------------------------------------GET /_search{    "query": {        "regexp":{            "name.first": "s.*y"        }    }}--------------------------------------------------// CONSOLEBoosting is also supported[source,js]--------------------------------------------------GET /_search{    "query": {        "regexp":{            "name.first":{                "value":"s.*y",                "boost":1.2            }        }    }}--------------------------------------------------// CONSOLEYou can also use special flags[source,js]--------------------------------------------------GET /_search{    "query": {        "regexp":{            "name.first": {                "value": "s.*y",                "flags" : "INTERSECTION|COMPLEMENT|EMPTY"            }        }    }}--------------------------------------------------// CONSOLEPossible flags are `ALL` (default), `ANYSTRING`, `COMPLEMENT`,`EMPTY`, `INTERSECTION`, `INTERVAL`, or `NONE`. Please check thehttp://lucene.apache.org/core/4_9_0/core/org/apache/lucene/util/automaton/RegExp.html[Lucenedocumentation] for their meaningRegular expressions are dangerous because it's easy to accidentallycreate an innocuous looking one that requires an exponential number ofinternal determinized automaton states (and corresponding RAM and CPU)for Lucene to execute.  Lucene prevents these using the`max_determinized_states` setting (defaults to 10000).  You can raisethis limit to allow more complex regular expressions to execute.[source,js]--------------------------------------------------GET /_search{    "query": {        "regexp":{            "name.first": {                "value": "s.*y",                "flags" : "INTERSECTION|COMPLEMENT|EMPTY",                "max_determinized_states": 20000            }        }    }}--------------------------------------------------// CONSOLENOTE: By default the maximum length of regex string allowed in a Regexp Query is limited to 1000. You can update the `index.max_regex_length` index setting to bypass this limit.include::regexp-syntax.asciidoc[]
 |