如果我减少@Document 注释中的分片参数,Elasticsearch 会自行减少分片数量吗?
Will Elasticseach reduce shards number by itself, if I reduce the shards paremeter in @Document annotation?
我在 Spring 启动应用程序中使用 Spring Data Elasticsearch 为我的实体设置了 @Document(shards=5)
。我已经意识到它太耗费资源,因此已将其减少到 @Document(shards=1)
并使用新代码重新部署了 java 应用程序。我在 ElasticSearch 方面没有采取任何行动。
Jest 客户端应该尽最大努力减少使用的分片数量,还是应该由我作为 Elasticsearch 管理员来完成?
一旦使用给定数量的主分片创建了索引,您就无法修改它。简单地重新部署您的应用程序可能不会重新创建索引,您需要先删除它,然后让您的应用程序在启动时使用新的分片数量重新创建它。
您可以使用以下方法轻松查看更改是否已应用(即您的索引是否有 5 个或 1 个分片):
GET _cat/shards/your-index-name
Spring 数据 Elasticsearch 在创建索引时使用此信息;它没有重新应用于更改参数,如分片的数量。因此,Spring Data Elasticsearch 无法实现您想做的事情。
如果您有能力删除数据并有可能重新加载它,则删除索引,使用更改后的 @Document
注释重新启动您的程序并重新加载数据。
如果无法简单地重新加载数据,可以直接在Elasticsearch中执行以下操作(具体命令请参考Elasticsearch文档):
- 使用您想要的分片设置创建一个新索引,并将其命名为 index-new
- reindex your old index to the new index
- 如果您可以接受新索引名称,请更改您的
@Document
注释以使用新索引。
- 如果不是,则删除旧索引并使用旧名称和新设置重新创建它,并从 index-new 重新索引到具有新名称的索引
我在 Spring 启动应用程序中使用 Spring Data Elasticsearch 为我的实体设置了 @Document(shards=5)
。我已经意识到它太耗费资源,因此已将其减少到 @Document(shards=1)
并使用新代码重新部署了 java 应用程序。我在 ElasticSearch 方面没有采取任何行动。
Jest 客户端应该尽最大努力减少使用的分片数量,还是应该由我作为 Elasticsearch 管理员来完成?
一旦使用给定数量的主分片创建了索引,您就无法修改它。简单地重新部署您的应用程序可能不会重新创建索引,您需要先删除它,然后让您的应用程序在启动时使用新的分片数量重新创建它。
您可以使用以下方法轻松查看更改是否已应用(即您的索引是否有 5 个或 1 个分片):
GET _cat/shards/your-index-name
Spring 数据 Elasticsearch 在创建索引时使用此信息;它没有重新应用于更改参数,如分片的数量。因此,Spring Data Elasticsearch 无法实现您想做的事情。
如果您有能力删除数据并有可能重新加载它,则删除索引,使用更改后的 @Document
注释重新启动您的程序并重新加载数据。
如果无法简单地重新加载数据,可以直接在Elasticsearch中执行以下操作(具体命令请参考Elasticsearch文档):
- 使用您想要的分片设置创建一个新索引,并将其命名为 index-new
- reindex your old index to the new index
- 如果您可以接受新索引名称,请更改您的
@Document
注释以使用新索引。 - 如果不是,则删除旧索引并使用旧名称和新设置重新创建它,并从 index-new 重新索引到具有新名称的索引