如果我减少@Document批注中的分片参数,Elasticseach会自行减少分片数量吗?

时间:2019-08-14 11:39:06

标签: spring elasticsearch spring-data jest spring-data-elasticsearch

我使用Spring Data Elasticsearch在我的SpringBoot应用程序中为我的实体设置了@Document(shards=5)。我已经意识到它太浪费资源了,已经将其减少到@Document(shards=1),并且刚刚用新代码重新部署了Java应用程序。我没有对ElasticSearch采取任何行动。

Jest客户端应该尽一切努力减少使用的分片数量,还是应该由自己作为Elasticsearch管理员来完成?

2 个答案:

答案 0 :(得分:1)

Spring Data Elasticsearch在创建索引时使用此信息;它没有重新申请更改分片的编号等参数。因此,Spring Data Elasticsearch无法实现您想要做的事情。

如果您有能力删除数据并有可能重新加载数据,请删除索引,使用更改后的@Document批注重新启动程序,然后重新加载数据。

如果不能简单地重新加载数据,则可以直接在Elasticsearch中执行以下操作(有关确切命令,请参阅Elasticsearch文档):

  • 使用您想要的分片设置创建一个新索引,并将其命名为例如 index-new
  • reindex your old index to the new index
  • 如果您可以使用新的索引名称,请更改@Document批注以使用新的索引。
  • 如果没有,请删除旧索引,并使用旧名称和新设置重新创建索引,并从 index-new 重新索引到新名称的索引

答案 1 :(得分:0)

一旦使用给定数量的主分片创建了索引,您将无法对其进行修改。只需重新部署您的应用程序可能就不会重新创建索引,您需要先将其删除,然后让应用程序在启动时使用新的碎片数重新创建它。

您可以使用以下方法轻松查看更改是否已应用(即索引是5个碎片还是1个碎片):

GET _cat/shards/your-index-name