我正在使用带有对 Elasticsearch 的响应式支持的 spring-data:
@Repository
public interface UserDocumentRepository extends ReactiveCrudRepository<UserDocument, UUID> {
}
现在,我的 UserDocument
注释为 @Document(indexName = "user-*")
它可以正常进行搜索(因为我使用的是 Kafka-connect 提供的 ES,所以我的服务不会创建新文档)。我的问题是,当我需要为每个集群参数化索引名称(使用相同的 Elasticsearch ,具有不同的索引名称)时,我有多个环境开发/测试。
所以对于开发人员,我需要
dev-user-*
对于测试,我需要 test-user-*
.我可以使用 ReactiveElasticsearchTemplate
您可以在哪里提供 indexName,但如何使用 ReactiveCrudRepository
?
最佳答案
您可以在 @Document
中使用 SpEL 表达式。注解。查看this question以及我对语法的回答。
编辑:
仅举几个如何动态构建索引名称的示例:
如果您有一个名为 env-name 的 application.properties 配置:
@Document(indexName = "#{@environment.getProperty('env-name')}-index-*")
我有一个名为 environmentProvider 的 bean,带有一个 getEnv() 方法:@Document(indexName = "#{@environmentProvider.getEnv()}-index-*")
关于elasticsearch - 具有索引名称的 ReactiveCrudRepository 供应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63109576/