ElasticsearchRepository动态indexName

时间:2015-07-09 11:35:15

标签: java elasticsearch spring-data-elasticsearch

在我的项目中,当我的类扩展ElasticsearchRepository时,我正在使用ElasticsearchRepository。

有没有办法动态更改indexName属性,我不想使用@Document,因为我的indexName是动态的?

1 个答案:

答案 0 :(得分:0)

@Document(indexName =“xxx”)可以是SpEL表达式。只要SDE需要索引名称来获取索引名称,就会解析表达式。因此,您可以通过application.yml文件使名称基于您在运行时配置的内容。理论上,你可以在SpEL中做任何事情。

我正在使用它来定义一个“前缀”值,该值预先附加到所有索引名称,以允许我在同一个ES群集中​​运行具有相同基本索引名称的多个应用程序,而不会相互冲突。所以我将@Document()标记为:

@Document(indexName = "#{environment.getRequiredProperty('es.prefix') + '-doc'}")

然后我将es.prefix配置为application.properties或application.yml文件中我想要的值。