【发布时间】:2018-06-28 07:37:16
【问题描述】:
我对弹性搜索的正则表达式查询有一些问题。在我的索引中有一个带有逗号分隔数值 (ID) 的文本字段,f.e.
2,140,3,2495
我有以下查询词:
"regexp" : {
"myIds" : {
"value" : "^2495,|,2495,|,2495$|^2495$",
"boost" : 1
}
}
但是我的结果列表是空的。
让我说,我知道正则表达式查询有点慢,但索引仍然存在并且充满了数百万个文档,所以很遗憾,它不是重组它的选项。所以我需要一个正则表达式解决方案。
【问题讨论】:
-
在 ES 正则表达式中,模式默认锚定,
^和$是文字字符。试试"2495,.*|.*,2495,.*|.*,2495|2495"。或者,我认为您可以使用更简单的"(.*,)?2495(,.*)?"
标签: regex elasticsearch