【发布时间】:2015-11-24 13:11:07
【问题描述】:
我有一个用例,需要每月在 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;
}
但这并没有按预期工作。我也在尝试其他一些事情。但我愿意接受建议。也可以随意评论我目前的方法,它是否有效。如果需要更多详细信息,请告诉我。
【问题讨论】:
标签: java spring elasticsearch spring-batch spring-data-elasticsearch