elasticsearch - 具有索引名称的 ReactiveCrudRepository 供应

标签 elasticsearch spring-data spring-data-elasticsearch

我正在使用带有对 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/

相关文章:

python - elasticsearch 小写,如 %term% search

java - 在 Spring Data MongoDB 映射中强制属性顺序

Spring 数据 MongoDB 示例不起作用

java - 索引@MultiField spring-data-elasticsearch。国际化目的

java - Hou 使用 spring data elasticsearch 滚动 api 进行排序

elasticsearch - 多种映射类型的索引

docker - 使用docker-compose将Elasticsearch请求/查询记录到docker实例的stdout中

elasticsearch - 删除与特定模式匹配的ElasticSearch索引

ElasticSearch 无法在 Ubuntu 16.04.3 上启动 - status=1 失败

spring - 无法通过 Spring Boot 代码执行 ALTER SEQUENCE 命令