我的ElasticSearch不会做一些复杂的查询 . 我使用ElasticSearch只是为了在大型数据集上进行快速搜索 .
它运行正常 . 搜索简单快捷 .
但随着索引中的文档变得庞大,添加新文档变得缓慢而缓慢 .
-
当索引的大小很小时,添加/索引100万个文档大约需要250秒 .
-
但是当相同索引的大小达到大约50 GB时,添加100万个文档大约需要1000秒 .
-
当同一索引的大小达到100 GB时,添加100万个文档需要更长的时间 .
-
有时在索引100万个文档的过程中,我可以看到弹性搜索连接错误,错误来自代码行附近的代码 . "//<2.0 "我刚刚爆炸" nonstructured exception" . 当我尝试将100万个文档索引到一个大索引(大约100 GB)时,我只看到这个错误 . 当索引大小较小时,我没有在日志中看到此错误 .
我想调整ElasticSearch集群以使其仍能快速返回搜索结果,但我也希望它能够快速索引/添加文档,即使索引达到100 GB或更大的大小 .
我会
-
在一个集群中使用3个节点(我没有找到集群中节点数量的良好答案,因此有些文章建议的三个似乎是一个很好的数字)
-
我会为每个索引使用5个分片1个副本 . (我也没找到好的号码,这是现在的默认号码)
-
现在,我在一个群集上有5-10个索引,群集大小为1000 GB(使用300 GB) . 如果我运行一个索引一个集群(集群大小200 GB),而不是在1000 GB集群上运行10个索引,那么在索引和搜索方面性能会更好吗?
-
我添加到索引中的文档是汇总的投影数据 . 该文件的字段数从6到12等 . 我把大部分领域的关键字数据类型,如果我做了较少的字段,比如只有一半的字段关键字,我能提高多少索引文件的速度? (在我的情况下,索引大小达到100 GB,每天我批量索引/添加100万个文档到索引 .
那么我可以对上述设置进行哪些更改以提高索引速度和性能,并减少错误,如过程中的Elasticsearch连接错误?
我正在使用AWS托管的Elasticsearch .
我还能做什么?
谢谢!
1 回答
索引文档时,您的es群集也会尝试将该数据同步到其他节点 . 为了获得更好的索引性能,可以进行一些改进 .
1 - 索引时设置大的refresh_interval . 这将延迟跨节点的数据同步并使索引更快 .
2 - 保持最佳批量大小,同时批量索引 .
3 - 正确设置堆大小,例如对于64Gb节点31 Gb应该是最佳堆 . 有关详细信息 - https://www.elastic.co/guide/en/elasticsearch/guide/current/heap-sizing.html
4 - 增加文件描述符和MMap - https://www.elastic.co/guide/en/elasticsearch/guide/current/_file_descriptors_and_mmap.html
5 - 如果您在摄取时转换数据,则可以使用专用摄取节点 - https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html
6 - 禁用复制(您可以在大索引后启用它)