【问题标题】:Will Elasticseach reduce shards number by itself, if I reduce the shards paremeter in @Document annotation?如果我减少 @Document 注释中的分片参数,Elasticsearch 会自行减少分片数量吗?
【发布时间】:2019-12-20 23:13:09
【问题描述】:
我在使用 Spring Data Elasticsearch 的 SpringBoot 应用程序中为我的实体提供了 @Document(shards=5)。我已经意识到它太消耗资源并将其减少到@Document(shards=1) 并且只是用新代码重新部署了java应用程序。我在 ElasticSearch 方面没有采取任何行动。
Jest 客户端应该尽最大努力减少使用的分片数量,还是应该由我作为 Elasticsearch 管理员来完成?
【问题讨论】:
标签:
spring
elasticsearch
spring-data
spring-data-elasticsearch
elasticsearch-jest
【解决方案1】:
Spring Data Elasticsearch 在创建索引时使用此信息;它没有重新应用于更改分片数量等参数。因此,Spring Data Elasticsearch 无法实现您想要做的事情。
如果您有能力删除数据并有可能重新加载,请删除索引,使用更改后的@Document 注释重新启动程序并重新加载数据。
如果您不能简单地重新加载数据,您可以直接在 Elasticsearch 中执行以下操作(具体命令请参阅 Elasticsearch 文档):
【解决方案2】:
使用给定数量的主分片创建索引后,您将无法对其进行修改。简单地重新部署您的应用可能不会重新创建索引,您需要先将其删除,然后让您的应用在启动时使用新的分片数量重新创建它。
您可以使用以下方法轻松查看更改是否已应用(即您的索引是否有 5 个或 1 个分片):
GET _cat/shards/your-index-name