首页 > 解决方案 > 在 Elasticsearch 中排除大量项目的更好方法

问题描述

我使用术语查询来排除 100,000 个或更多项目的列表,因为默认情况下术语查询只允许 65,536 个术语,ES 抛出以下错误:

术语查询请求中使用的术语 [115687] 数量已超过允许的最大值 [65536]。可以通过更改 [index.max_terms_count] 索引级别设置来设置此最大值。

解决我的问题的一种方法是增加max_terms_count,但我怀疑它会很慢。

另一种解决方案是在 PHP 中排除那些也太耗费资源的项目。

有没有更好的方法从 ES 搜索结果中排除大量项目?

标签: phpelasticsearch

解决方案


  1. 对于极少数情况,我建议使用面向客户端的解决方案:将异常列表分成两部分:前 65k 项应由 ES 处理,其余的 - 在 PHP 中。
  2. 面向性能的解决方案:将排除列表限制为 65k(客户端限制)

推荐阅读