Ich habe versucht, herauszufinden, die beste Möglichkeit, tatsächliche Regex-Muster innerhalb einer Elasticsearch 5.4 Abfrage verwenden. Nach der Suche nach dem Standardanalysator und dem Tokenieren jedes Zeichenfolgenfelds begann ich, das nicht analysierte Feld zu verwenden, das in meinen Zuordnungen platziert wurde (standardmäßige .raw-Eigenschaft). Ich habe zwei Varianten derselben Abfrage ausprobiert, beides war nicht erfolgreich.Elasticsearch Bool Abfrage mit Regexp Filter
Abfrage String-Filter:
GET /test-*/_search
{
"query": {
"bool": {
"must": [
{
"query_string":{
"query": "URL.raw:/^(http|https)\\:\/\/.+(wp-content|wp-admin)/"
}
}
]
}
},
"sort": {
"@timestamp": {
"order": "desc"
}
}
}
REGEXP FILTER:
GET /test-*/_search
{
"query": {
"bool": {
"must": [
{
"regexp": {
"URL.raw":{
"value": "/^(http|https)\\:\/\/.+(wp-content|wp-admin)/"
}
}
}
]
}
},
"sort": {
"@timestamp": {
"order": "desc"
}
}
}
Beide scheinen keine Ergebnisse zu erhalten oder Ausnahmen analysieren
{
"error": {
"root_cause": [
{
"type": "parse_exception",
"reason": "parse_exception: Encountered \" \"^\" \"^ \"\" at line 1, column 8.\nWas expecting one of:\n <BAREOPER> ...\n \"(\" ...\n \"*\" ...\n <QUOTED> ...\n <TERM> ...\n <PREFIXTERM> ...\n <WILDTERM> ...\n <REGEXPTERM> ...\n \"[\" ...\n \"{\" ...\n <NUMBER> ...\n "
},
Hat lucene erfordern spezielle Entkommen oder die schwarze Liste gesetzt Zeichen? Jede Hilfe oder Hinweise würden sehr geschätzt werden. Vielen Dank!
Lucene Regexps sind standardmäßig verankert und '^'/'$' sind dort nicht besonders. Sie brauchen keine '/' Regex-Begrenzer und Sie müssen nicht '/' entkommen. Probiere das 'regexp_filter' mit' "https?: //.*wp- (content | admin). *" ' –