差异与性能有关。查询 后 始终执行顶层的“过滤器” 。这意味着对所有文档执行查询,为所有文档计算分数,等等。-只有不匹配过滤器的文档才会被排除。
使用“过滤的”查询,ES可能会优化此计算,例如,首先执行过滤器,然后对有限的一组文档执行查询,从而节省了测试与查询不匹配过滤器的文档的时间,以及如果他们确实符合查询条件,则为他们计算分数。
如果使用同一过滤器执行多个查询,则还有更多优点:可以缓存过滤器,从而进一步提高每个查询的性能。这适用于您的示例:默认情况下会缓存“术语”过滤器。
您还可以显式控制“已过滤”查询的执行(请参阅文档),以针对特定用例进行优化。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)