php - 在 Elasticsearch 中排除大量项目的更好方法
问题描述
我使用术语查询来排除 100,000 个或更多项目的列表,因为默认情况下术语查询只允许 65,536 个术语,ES 抛出以下错误:
术语查询请求中使用的术语 [115687] 数量已超过允许的最大值 [65536]。可以通过更改 [index.max_terms_count] 索引级别设置来设置此最大值。
解决我的问题的一种方法是增加max_terms_count,但我怀疑它会很慢。
另一种解决方案是在 PHP 中排除那些也太耗费资源的项目。
有没有更好的方法从 ES 搜索结果中排除大量项目?
解决方案
- 对于极少数情况,我建议使用面向客户端的解决方案:将异常列表分成两部分:前 65k 项应由 ES 处理,其余的 - 在 PHP 中。
- 面向性能的解决方案:将排除列表限制为 65k(客户端限制)
推荐阅读
- php - Laravel Doesn't see Routes in Scaffolded Auth login
- php - php中对任何人或特定域的Google Drive API(团队驱动器)文件权限
- meta-tags - Angular Meta Service 不添加和更新动态标签值
- asp.net-core - 避免 DateTime 转换,同时将其传递给 AspNetCore.SignalR .Net 客户端
- ios - UICollectionView 不显示单元格和崩溃的应用程序 Xcode 10.0
- assembly - 什么是未使用的内存地址?
- angular - Angular - 根据设备是移动设备还是桌面设备更换模板
- javascript - 如何在 phpMyAdmin 和 MySQL 中设置用户并从 NodeJS 查询
- excel - 我可以在 vba 中使用 shape.width 作为条件吗
- macos - MAC OS Awk - 使用变量生成文件时出现语法错误