Elasticsearch:如何减少主要分片的数量?

时间:2019-05-23 18:08:09

标签: windows elasticsearch windows-services kibana sharding

我在使用Elasticsearch时遇到了一些困难。顺便说一句,我将Elasticsearch作为Windows服务运行。

值得注意的是:

  1. 我无法通过Cerebro连接到我的Elasticsearch集群(1个节点)。
  2. Elasticsearch请求正在超时。首先,Kibana noticed the timeouts,然后我开始进一步调查。
  3. 重新启动Elasticsearch服务时,需要很长时间才能启动。值得注意的是,当我运行c:\downloads>ver Microsoft Windows [Version 10.0.17763.503] c:\downloads>SCHTASKS /Create /SC MINUTE /MO 1 /TN mydir /TR "dir c:\windows > c:\downloads\temp_w.txt" WARNING: The task name "mydir" already exists. Do you want to replace it (Y/N)? y y SUCCESS: The scheduled task "mydir" has successfully been created. c:\downloads>schtasks /run /tn mydir SUCCESS: Attempted to run the scheduled task "mydir". c:\downloads>dir temp_w.txt Volume in drive C has no label. Volume Serial Number is ECC7-1C96 Directory of c:\downloads File Not Found 时,索引从黄色变为红色需要很长时间。

我跑了_cat/indices,发现了以下内容:

_cluster/stats?human&pretty

我的问题:

  • 793碎片是一个红旗吗?我应该调整这个吗?

更新:我相信我已经分配了太多的碎片。

所以我修改后的问题是:

  • 我如何补救这种情况,即我分配了太多的碎片?
    • 具体来说,我应该缩小到多少个碎片?
    • 我应该发出哪些命令来减少分片的数量?
      • 特别考虑到我的Elasticsearch集群(即1个节点)需要很长时间才能重新启动。

2 个答案:

答案 0 :(得分:3)

在Elasticsearch的1个节点上拥有793个主要分片是很大的 NO 。 Elasticsearch规模来自其分布式性质。另外,我注意到您没有任何副本,因此也不可靠。如果某些主要分片已损坏,则在这种情况下它们没有任何恢复机制。

提到您的问题,我应该缩小到多少个碎片?
那么,如果您具有大数据(超过100 GB),则完全取决于您的要求,应将其拆分为多个主分片,并将它们放置在多个节点上以提高性能(由小分片大小和另一个硬件获得),并且提供水平可伸缩性(HS)。

但是,如果您的数据很小,即总索引大小为几GB,那么具有多个分片的数据也会损害性能,因为您的分片将只有少量数据,而将所有数据存储在一个分片中将大大提高性能。在这种情况下。

有关分片策略的详细信息,请参阅this指南。

您可以使用提供的链接https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-shrink-index.html用户The_Pingu减少分片的数量,但这还取决于所使用的ES版本。我建议,在走那条路之前,您应该考虑以下架构方面。

  1. 在ES群集中​​应该有多少个节点,绝对不建议在生产中使用一个节点ES群集,因为即使生产中的数据很少,您也会失去高可用性。
  2. 您需要多少个碎片。
  3. 您需要多少个副本。 (尽管可以在不增加太多开销的情况下轻松地更改运行时)。

答案 1 :(得分:1)

如果您在一台计算机上运行elasticsearch,我会说是的,这是一个很大的危险信号。您应该能够使用1个分片来做您想做的事。 看到那里更多细节: Multiple shards on single machine performance