在我的项目中,当我的类扩展ElasticsearchRepository时,我正在使用ElasticsearchRepository。
有没有办法动态更改indexName属性,我不想使用@Document,因为我的indexName是动态的?
答案 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文件中我想要的值。