【发布时间】:2020-03-28 20:26:05
【问题描述】:
我想知道使用must 子句和must_not 之间的性能差异。
我从他们两个那里得到了不同的时间尝试。
假设我有 10 个组,我想让用户可以访问 5 个组,而排除 5 个组。
所以,我有两种使用查询的方法:
我可以在布尔查询中使用must 子句,然后执行must: ['1', '2' ,'3', '4', '5']。
我可以再次在布尔查询中使用must_not 子句,然后执行must_not:['6', '7', '8', '9', '10']。
我在这里没有提供很多细节,因为我只是想更多地了解使用这两个术语在性能方面的差异。
我在 ES 文档中读到了布尔查询,它说在must_not 子句中忽略了评分,尽管我还没有理解如何在 Lucene 索引中执行评分。
但我得到了一些时间差异,must_not 比must 花费的时间更长,并且很想发帖。
注意:目前使用,Elasticsearch 版本:2.4.4,暂时无法升级。 谁能解释一下区别或详细解释这两个条款? 接受任何类型的建议和答案。 提前致谢。
【问题讨论】:
-
您有多少个文档,它们是否均匀分布在您的 10 个组中?如果不是,您认为分布是什么样的?
标签: performance elasticsearch elasticsearch-2.4