1

我是弹性搜索的新手。我有一个大约 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 秒或更多。

我用谷歌搜索并阅读了一些帖子。人们说创建更多分片会使搜索变慢。

如何改进我的搜索查询?

非常感谢!

4

1 回答 1

3

你会想看这个视频:

http://www.elasticsearch.org/webinars/elasticsearch-pre-flight-checklist/

ES 的默认值非常适合开发,但不适用于生产。您真正需要做的一件事是为 JVM 提供服务器上 50% 的可用内存。该视频还有许多其他很棒的技巧。

于 2014-04-24T21:49:49.323 回答