Elasticsearch 转义正则表达式中的特殊字符

问题描述 投票:0回答:1

我想使用正则表达式在elasticsearch中搜索,但我必须在这个短语“http://10.10.100.100/test.txt”中转义特殊字符 我试过了:

GET indexname/_search
{
  "query": {
    "nested": {
      "path": "test",
      "query": {
        "bool": {
          "must": [
            { 
              "regexp": { 
                "test.search1": "http://10.10.100.100.*" 
              }
            },
            { 
              "match": { 
                "test.search2": "url" 
              }
            }
          ]
        }
      }
    }
  }
}

不工作。

当我将“http://10.10.100.100.”替换为“http.”时 它正在工作,所以我需要转义“:”和“//”

如何使用elasticsearch做到这一点

elasticsearch kibana
1个回答
0
投票

Elasticsearch保留了一些特殊字符。他们是,

+ - = && || > < ! ( ) { } [ ] ^ " ~ * ? : \ /

为了在查询中使用这些字符,您需要使用

\
对它们进行转义。在您的情况下,您应该使用此字符串进行查询

"test.search1": "http\:\/\/10.10.100.100.*"

而不是这个

"test.search1": "http://10.10.100.100.*" 

有关更多信息,您可以参考此处的文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#_reserved_characters

© www.soinside.com 2019 - 2024. All rights reserved.