【发布时间】:2018-07-16 22:47:08
【问题描述】:
我正在尝试在 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 真的可以做我需要的吗?谢谢。
【问题讨论】:
标签: regex elasticsearch kibana