我想知道Elasticsearch是否可以排除查询是单个术语的查询?我正在尝试使用" minimum_should_match" as 2,当查询有2个或更多项时效果很好。但是,如果查询中的术语数为1,则ES仍将返回结果。似乎ES正在使用&#34的逻辑;你要求最少匹配两个术语,但只有一个术语可以匹配;我们将最小值降低到1"。有没有办法关闭此功能,或以其他方式做我想要的?
对于那些想知道为什么不能在API级别完成的人,我使用的是一个排除停用词的查询分析器。所以像" ipad"将最终成为1个术语,而API将会看到2. API可以进行禁用词过滤,但这似乎是浪费资源。
答案 0 :(得分:1)
在进行查询之前,您可以先分析自定义分析器的输入。 您可以使用Analyze API(确保将analyzer属性设置为等于您的自定义分析器名称)。
结果将是分析的令牌列表。如果您的分析器删除了停用词,则ipad
只返回a ipad
。
因此,如果Analyze API只返回一个令牌,那么您实际上并不需要查询Elasticsearch,因为如果令牌数量少于2(如果我理解正确的话),您就不会想要任何结果< / p>