我是Elasticsearch的新手。我的Elasticsearch索引约为300,000个项目。对于另一个表中的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 s甚至更多。
我在google上阅读了一些帖子。人们说创建更多碎片将使搜索变慢。
如何改善搜索查询?
非常感谢!
最佳答案
您将要观看此视频:
http://www.elasticsearch.org/webinars/elasticsearch-pre-flight-checklist/
ES的默认值非常适合开发,但不适用于生产。您真正需要做的一件事是为JVM提供服务器上50%的可用内存。该视频还有很多其他的技巧。
关于multithreading - 如何在一台服务器上配置Elasticsearch集群以获得最佳搜索性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23269280/