Динамическое создание имени индексов в Elasticsearch с использованием Spring-Data Elasticsearch
У меня есть случай, когда нужно создавать индексы в месяц в Elasticsearch. Идея состоит в том, чтобы создавать индексы на ежемесячной основе, чтобы их было легко обслуживать и их можно было удалить по истечении срока. Для этого я использовал подпружиненный пакет и у меня есть ежемесячная работа, которая будет создавать индексы на ежемесячной основе. Для Elasticsearch -Java интеграция Я использовал реализацию Spring-Data Elasticsearch. Проблема, с которой я сталкиваюсь сейчас, заключается в том, что я не могу понять, как предоставить динамическое имя для индекса и сопоставления с помощью объекта Entity. Моя текущая реализация выполнена с учетом Единого индекса. Пожалуйста, найдите ниже код, который я использую для создания индексов
elasticsearchTemplate.createIndex(SingleChat.class);
elasticsearchTemplate.putMapping(SingleChat.class);
elasticsearchTemplate.refresh(SingleChat.class, true);
И SingleChat мой класс сущностей
@Document(indexName="singlemsgtemp_#{jobParameters['MONTH']}",type="singlechat")
public class SingleChat {
@org.springframework.data.annotation.Id
String Id;
@Field(type = FieldType.String)
String conservationId;
@Field(type = FieldType.String)
String from;
@Field(type = FieldType.String)
String to;
@Field(type = FieldType.String)
String msgContent;
@Field(type = FieldType.String)
String sessionId;
@Field(type = FieldType.Date, index = FieldIndex.not_analyzed, store = true, format = DateFormat.date_hour_minute_second_millis)
Date postedDate;
@Field(type = FieldType.Date, index = FieldIndex.not_analyzed, store = true, format = DateFormat.date_hour_minute_second_millis)
Date expireDate;
}
Но это не работает, как ожидалось. Я пробую и другие вещи. Но я открыт для предложений. Также не стесняйтесь комментировать мой текущий подход, будет ли он работать или нет. Пожалуйста, дайте мне знать, если потребуется дополнительная информация.