最近在做项目的时候,遇到一个问题,要访问不同索引(可以当成分库去理解),如果是用直接请求的方式很容易做到,但是用了spring-data-elasticsearch好像不是很好实现,在网上看到基本上都是indexName直接赋值。如果也有这样需求的可以试试我的方法,下面就具体写一下:
1、首先定义indexName的赋值类
public class EsIndexChange {
private static String suffix;
public static void setSuffix(String suffix) {
EsIndexChange.suffix = suffix;
}
public static String getSuffix() {
return suffix;
}
}
2、然后直接用在@Document注解里面
@Document(indexName = "testmail_#{ T(com.util.EsIndexChange).getSuffix() }", type = "mail")
public class MailInfo{
@Id
@Field(index = false, store = true, type = FieldType.Text)
private String id;
.......
然后再需要换索引的时候,setSuffix就可以了。