如何在 spring data elasticsearch 中管理多个用户索引
How to manage multiple user indexes in spring data elasticsearch
在 spring 数据 elasticsearch 中,一个模型 class/entity 表示或映射到一个索引和类型。
例如:-
@Document(indexName = "myindex",type="mytype")
public class DocumentModel {
......
}
我有一个用例,我应该用相同结构在不同的 es 索引中索引数据。如果是这种情况,我如何用这个模型 class 来表示所有这些指数?
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
注释中的任何索引名称
在 spring 数据 elasticsearch 中,一个模型 class/entity 表示或映射到一个索引和类型。
例如:-
@Document(indexName = "myindex",type="mytype")
public class DocumentModel {
......
}
我有一个用例,我应该用相同结构在不同的 es 索引中索引数据。如果是这种情况,我如何用这个模型 class 来表示所有这些指数?
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
注释中的任何索引名称