使用 Spring 数据 Elasticsearch 的索引别名和零停机时间
Index Aliases and zero downtime with Spring data Elastisearch
我在我的项目中使用 spring-data-elasticsearch 4.2.2 版。
我们每天都需要重新索引一些数据,所以我们使用别名。我已经看到有一种方法可以原子地 从别名中删除索引并包含一个新索引。
Link: https://www.elastic.co/guide/en/elasticsearch/guide/current/index-aliases.html
我的问题是该功能是否在 IndexOperations class 级别作为 spring-data-elasticsearch 4.2.2 版的一部分得到支持和包含。
编辑
使用 AliasActions 删除现有索引(旧索引)并向新索引添加别名我收到此异常:
java.lang.NoSuchMethodError: 'org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest$AliasActions org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest$AliasActions.isHidden(java.lang.Boolean)'
var aliasActions = new AliasActions()
.add(new AliasAction.RemoveIndex(AliasActionParameters.builder()
.withIndices(oldIndexName).build()))
.add(new AliasAction.Add(
AliasActionParameters.builder().withIndices(newIndexName)
.withAliases(indexOps.getIndexCoordinates().getIndexNames()).build()));
您为此使用 IndexOperations.alias(AliasActions aliasActions)
方法 (https://docs.spring.io/spring-data/elasticsearch/docs/4.2.2/api/org/springframework/data/elasticsearch/core/IndexOperations.html#alias-org.springframework.data.elasticsearch.core.index.AliasActions-)。
AliasAction
可以是添加、删除或删除索引,这些 AliasActions 在一次操作中发送到 ES 并在那里自动执行。
我在我的项目中使用 spring-data-elasticsearch 4.2.2 版。 我们每天都需要重新索引一些数据,所以我们使用别名。我已经看到有一种方法可以原子地 从别名中删除索引并包含一个新索引。 Link: https://www.elastic.co/guide/en/elasticsearch/guide/current/index-aliases.html
我的问题是该功能是否在 IndexOperations class 级别作为 spring-data-elasticsearch 4.2.2 版的一部分得到支持和包含。
编辑
使用 AliasActions 删除现有索引(旧索引)并向新索引添加别名我收到此异常:
java.lang.NoSuchMethodError: 'org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest$AliasActions org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest$AliasActions.isHidden(java.lang.Boolean)'
var aliasActions = new AliasActions()
.add(new AliasAction.RemoveIndex(AliasActionParameters.builder()
.withIndices(oldIndexName).build()))
.add(new AliasAction.Add(
AliasActionParameters.builder().withIndices(newIndexName)
.withAliases(indexOps.getIndexCoordinates().getIndexNames()).build()));
您为此使用 IndexOperations.alias(AliasActions aliasActions)
方法 (https://docs.spring.io/spring-data/elasticsearch/docs/4.2.2/api/org/springframework/data/elasticsearch/core/IndexOperations.html#alias-org.springframework.data.elasticsearch.core.index.AliasActions-)。
AliasAction
可以是添加、删除或删除索引,这些 AliasActions 在一次操作中发送到 ES 并在那里自动执行。