在我的项目中,当我的班级正在扩展 ElasticsearchRepository 时,我正在使用 ElasticsearchRepository。
有没有办法动态更改 indexName 属性,我不想使用@Document,因为我的 indexName 是动态的?
在我的项目中,当我的班级正在扩展 ElasticsearchRepository 时,我正在使用 ElasticsearchRepository。
有没有办法动态更改 indexName 属性,我不想使用@Document,因为我的 indexName 是动态的?
@Document(indexName = "xxx") 可以是 SpEL 表达式。每当 SDE 需要索引名称以获取索引名称时,都会解析该表达式。因此,您可以使名称基于您在运行时配置的内容,例如通过 application.yml 文件。理论上,您在 SpEL 中可以做的任何事情都应该是可能的。
我使用它来定义一个“前缀”值,该值添加到所有索引名称之前,以允许我在同一个 ES 集群中运行具有相同基本索引名称的多个应用程序而不会相互冲突。所以我有我的@Document() 标签:
@Document(indexName = "#{environment.getRequiredProperty('es.prefix') + '-doc'}")
然后我将 es.prefix 配置为 application.properties 或 application.yml 文件中我想要的值。