在spring data elasticsearch中,一个模型类/实体表示或映射到索引和类型。
例如: -
@Document(indexName = "myindex",type="mytype")
public class DocumentModel {
......
}
我有一个用例,我应该使用相同的结构来索引不同es索引中的数据。如果是这种情况,我怎么能用这个模型类表示所有这些索引?
答案 0 :(得分:5)
Spring Data ES支持在@Document
注释的索引名称中使用SpEL表达式,如下所示:
@Document(indexName = "myindex-#{userId}", type="mytype")
public class DocumentModel {
......
}
因此,您可以访问whole context offered by SpEL以创建索引名称。
<强>更新强>
如果您使用elasticsearchTemplate
,则有一个更简单的变体,您可以这样做:
IndexQuery indexQuery = new IndexQueryBuilder()
.withId(docModel.getId())
.withObject(docModel)
.withIndex("myindex"+docModel.getUserId()).build();
对withIndex("...")
的调用将覆盖@Document
注释中的任何索引名称