我正在尝试在ElasticSearch中执行(我认为是)简单的RegExp查询,但是对我来说,我无法使其正常工作。这就是查询,
{
"query": {
"regexp":{
"request_url": "/somepage/[0-9]+/[a-z]+"
}
}
}
该查询似乎中断的地方是当我包含正斜杠/
字符时。没有正斜杠,我可以获得每个单独部分的结果。
我仅尝试使用斜杠/
,尝试使用\/
和\\/
进行转义。我将查询减少为/somepage
和\\/somepage
,什么都没有。
我一直在对此进行大量搜索,但似乎找不到一致的答案。我认为也许ElasticSearch在RegExp查询中不支持/
...?通过查看文档,我知道它不是保留字符。
这与该字段的数据类型有关吗?
"request_url": {
"type": "text",
"norms": false,
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
text
在查看文档时明确表示它分析并标记了数据。因此,我希望它可能会丢弃/
个字符?我也尝试对keyword
字段进行查询,但该查询不起作用。
那么,有什么建议吗? ElasticSearch可以实际满足我的需求吗?谢谢。
答案 0 :(得分:0)
我的建议:
\\\\/
如果将其视为字符串,它将在JSON中变为\\/
,同时也将变为\/
\x2f
及其衍生物=> \\x2f
或\\\\x2f