我是弹性搜索的新手。我有一个大约 300,000 个项目的 Elasticsearch 索引。对于另一个表中的 6000 万条记录中的每一条,我都需要对这个 ES 索引进行复杂的查询。
现在,它非常慢(进行 1000 个查询需要 200 秒)。我需要有关如何配置我的 elasticsearch 集群以处理大量查询的建议。
我的服务器:
8 core
8GB ram
SSD Hardware
我想配置 elasticsearch 来处理来自 ruby 的 1000 个并发搜索请求。(我想并行搜索 1000 个项目)。
我尝试了默认配置
我认为默认情况下,elasticesearch 只能处理大约 10-20 个并发搜索请求。它使用很少的cpu和ram。因此,我认为我可以改进它。
我只能从 ruby 运行 100 个线程来搜索 1000 个项目,大约需要 200 秒。如果我从 ruby 增加到 1000 个线程,ES 会返回超时错误消息。
我运行一个主节点
ES_HEAP_SIZE=2G
indices.fielddata.cache.size: 1g
threadpool:
search:
type: fixed
size: 200
queue_size: 400
shares: 5
replicas: 1
从 ruby 运行 100 个线程来搜索 1000 个项目仍然需要 200 秒。
我在这台服务器上添加了 3 个新节点作为数据节点。
从 ruby 运行 100 个线程来搜索 1000 个项目仍然需要 200 秒或更多。
我用谷歌搜索并阅读了一些帖子。人们说创建更多分片会使搜索变慢。
如何改进我的搜索查询?
非常感谢!