У меня есть вариант использования, когда нужно создавать индексы в месяц в 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;
}
Но это не работает, как ожидалось. Я также пробую некоторые другие вещи. Но я открыт для предложений. Также не стесняйтесь комментировать мой текущий подход, будет ли он работать или нет. Пожалуйста, дайте мне знать, если потребуется дополнительная информация.