使用Spring-Data Elasticsearch在Elasticsearch中创建索引名称
2022-09-04 03:00:31
我有一个用例,需要每月在Elasticsearch中创建索引。这个想法是在每月的基础上创建索引,以便它们易于维护,并且可以在过期时删除。为了实现这一点,我已经使用了spring-batch,并有一个每月的工作,它将在每月的基础上创建索引对于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;
}
但这并没有像预期的那样工作。我也在尝试其他一些事情。但我愿意接受建议。也请随时评论我目前的方法,它是否有效。如果需要更多详细信息,请告诉我。