我正在使用 Elasticsearch,我需要执行phrase_search,其中第一个术语匹配为正则表达式。 更准确地说: 我需要搜索具有此模式的字符串:
“(数字)毫秒”。
我知道有“regexp”查询类型,但是只允许我搜索一个术语。使用两个 bool 子句也不起作用,因为它与顺序无关。
相反,我想使用“regexp”运算符以某种方式嵌套在短语查询中,以便在精确的序列中进行匹配。
有人知道怎么做吗?
最佳答案
对已分析
(标记化)字段的正则表达式查询只能应用于一个术语,因此您无法执行多单词正则表达式查询。您不需要在映射中分析(例如使用 keyword
类型)ES 字段,这将允许您将正则表达式与整个短语匹配,而不仅仅是术语。
关于regex - ElasticSearch 短语查询中的正则表达式查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47552221/