【问题标题】:Index Aliases and zero downtime with Spring data Elastisearch使用 Spring 数据 Elasticsearch 索引别名和零停机时间
【发布时间】:2021-09-23 22:48:02
【问题描述】:

我在我的项目中使用 4.2.2 版的 spring-data-elasticsearch。 我们需要每天重新索引一些数据,所以我们使用别名。我已经看到有一种方法可以原子地从别名中删除索引并包含一个新索引。 链接:https://www.elastic.co/guide/en/elasticsearch/guide/current/index-aliases.html

我的问题是是否支持该功能并将其作为 spring-data-elasticsearch 版本 4.2.2 的一部分包含在 IndexOperations 类级别。

编辑

使用 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()));

【问题讨论】:

    标签: java spring elasticsearch spring-data spring-data-elasticsearch


    【解决方案1】:

    您为此使用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可以是add、remove或removeindex,这些AliasActions在一个操作中被发送到ES并在那里原子地执行。

    【讨论】:

    • 谢谢。我用过那个方法。我更新了问题。我在尝试将别名添加到新索引时遇到异常。如果我从请求中删除 Add AliasAction,RemoveIndex 工作正常。
    • 问题是版本不匹配。我使用的是 7.6.2 客户端库,我的集群在 7.8.0 上。将客户端库更新到 7.8.0 解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    相关资源
    最近更新 更多