【发布时间】:2026-01-24 16:25:02
【问题描述】:
查询下方的弹性搜索不返回任何结果:
1.) {"query":{"regexp":{"field_name":".*f04((?!z).)*"}}
为什么像上面这样的查询没有返回任何结果?
我期待这样的结果:
['f00bar', 'f04bar', 'f04barbuh', 'f04ba']
而下面一个返回:
2.) {"query":{"regexp":{"field_name":".*f04((?!z).)*.*"}}
由此返回的结果:['f04bar', 'f04barbuh', 'f04ba', 'f04baz']
我知道第二个查询返回结果是因为 .* 最后,正则表达式中的'!' 有什么问题,应该是别的什么吗?我们如何使用!作为正则表达式的一部分来指定ba后面不应该跟z。
【问题讨论】:
标签: regex elasticsearch elasticsearch-dsl elasticsearch-dsl-py