我的用例用于搜索英国地址,在那里有一个明确定义的邮政编码系统,但是我的用户可能仍然在邮编中发生错误。我想使用过滤器,因为在大多数情况下,用户将获得正确的邮编,我不想让Elasticsearch更加努力工作,但是我希望避免从应用程序到ES的往返运行。Elasticsearch过滤器只有在与第一个过滤器不匹配的情况下
我正在使用edge n-gram
分析器如在该文档中所描述的,所以,取邮政编码ME4 4NR
作为一个例子我有ME4 4NR
,ME4 4N
,ME4 4
和ME4
索引。我想先按ME4 4NR
进行过滤,如果这样不产生匹配,则只能扩展到ME4 4N
。
我可以在我的ES查询中实现这一点,还是需要在我的应用程序逻辑中实现这个功能?任何意见将不胜感激。我可以在其他人上使用ME4
和should
上的must
布尔值过滤器,但我想知道是否有更好的方法?
感谢您的建议Andrei,非常感谢。现在,我在第一部分(例如ME4)上提供了一个过滤器,使ES在7000万条记录上的生活变得轻松多了,并保持搜索性能良好,结果合理,然后将完整的邮政编码作为常规匹配传递给分析仪查询并让它做它的事情,结果非常好,再次感谢您的帮助。 –