#java #spring #elasticsearch #spring-data #spring-data-elasticsearch
Вопрос:
Я использую версию 4.2.2 spring-data-elasticsearch в своем проекте. Нам нужно каждый день переиндексировать некоторые данные, поэтому мы используем псевдонимы. Я видел, что есть способ атомарно удалить индекс из псевдонима и включить новый. Ссылка: https://www.elastic.co/guide/en/elasticsearch/guide/current/index-aliases.html
Мой вопрос в том, поддерживается ли эта функция и включена ли она в версию 4.2.2 spring-data-elasticsearch на уровне класса 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()));
Ответ №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.Псевдонимы-).
An AliasAction
может быть add, remove или removeindex, и эти псевдонимы отправляются в ES в одной операции и выполняются там атомарно.
Комментарии:
1. Спасибо. Я использовал этот метод. Я обновил вопрос. Я получаю исключение, пытаясь добавить псевдоним в новый индекс. Если я удалю действие Добавить псевдонимы из запроса, RemoveIndex будет работать нормально.
2. Проблема заключалась в несоответствии версий. Я использовал клиентские библиотеки 7.6.2, и мой кластер находится на версии 7.8.0. Обновление клиентских библиотек до версии 7.8.0 устранило проблему.