我一直在試圖找出一個Elasticsearch 5.4查詢中使用正則表達式的實際模式的最佳途徑。搜索有關標準分析器和標記化而每串場後,我開始使用放置在我的映射關係沒有分析領域(標.RAW屬性)。我試過了同一個查詢的兩個變體,都沒有成功。Elasticsearch布爾查詢使用正則表達式過濾
查詢字符串過濾器:
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"
}
}
}
似乎都沒有結果或解析異常
{
"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 "
},
是否Lucene的需要特殊的轉義或列入黑名單的字符?任何幫助或指針將不勝感激。謝謝!
Lucene的正則表達式,默認情況下並固定''^ /'$'不是特殊那裏。你不需要'/'正則表達式的分隔符,你不需要逃避'/'。試着用'了'regexp_filter' 「的https://.*wp-(內容|管理員)*。」' –