我想使用正则表达式在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保留了一些特殊字符。他们是,
+ - = && || > < ! ( ) { } [ ] ^ " ~ * ? : \ /
为了在查询中使用这些字符,您需要使用
\
对它们进行转义。在您的情况下,您应该使用此字符串进行查询
"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