spring data elasticsearch:动态配置实体类索引名称indexName

简介: 最近接到一个需要,需要在spring data elasticsearch关联的实体类中动态的根据配置文件动态创建索引名称,比如开发环境下索引名称为user-dev,测试环境下为user-test,生产环境为user-prod一开始接到这个需要觉得很怪,因为不同环境的区分直接搭建不同的es服务器环境不就行了吗,为什么要这么麻烦来处理呢?后来了解到是因为当前项目成本受限,需要隔离开发环境和测试环境用的同一台服务器,于是就产生了这个奇怪的需求。其实想想,不排除某些场景下,就需要动态的创建索引名称。于是今天我们就来看看怎么实现这个需求

0. 引言

最近接到一个需要,需要在spring data elasticsearch关联的实体类中动态的根据配置文件动态创建索引名称,比如开发环境下索引名称为user-dev,测试环境下为user-test,生产环境为user-prod

一开始接到这个需要觉得很怪,因为不同环境的区分直接搭建不同的es服务器环境不就行了吗,为什么要这么麻烦来处理呢?后来了解到是因为当前项目成本受限,需要隔离开发环境和测试环境用的同一台服务器,于是就产生了这个奇怪的需求。

其实想想,不排除某些场景下,就需要动态的创建索引名称。于是今天我们就来看看怎么实现这个需求

1. 解决

首先我们需要明确目标,我们要动态定义这里的indexName。也就是说我们要在'user'-dynamic后拼接上我们的spring.profiles.active配置项

在这里插入图片描述

2、首先我们需要创建Bean,用来声明active

/**
 * @author whx
 * @date 2022/7/22
 */
@Component
@Getter
public class IndexNameBean {

    @Value("${spring.profiles.active}")
    private String active;
}

3、我们在配置文件application.yml中声明active

spring:
    profiles:
      active: dev

4、然后在实体类中通过#{indexNameBean.active}来拼接

在这里插入图片描述

5、运行项目进行测试(我这里设置了启动项目自动根据实体类创建索引)

kibana中执行GET user-dynamic-dev/_mapping查询到索引user-dynamic-dev存在,说明动态创建成功

在这里插入图片描述

6、修改配置文件中active为test,重启项目

spring:
    profiles:
      active: test

kibana中执行GET user-dynamic-test/_mapping查询到索引存在,切换成功

在这里插入图片描述

这样只要不同的环境的配置文件中声明不同的active就是实现索引名称的动态切换了

问题搞定!

2. 文中源码

文中演示源码见如下git地址:

https://gitee.com/wuhanxue/es-test3.x

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
目录
相关文章
存储 JSON Java
964 0
|
存储 缓存 监控
优化Elasticsearch 索引设计
优化Elasticsearch 索引设计
404 5
|
存储 JSON 关系型数据库
Elasticsearch 索引
【11月更文挑战第3天】
461 4
|
测试技术 API 开发工具
ElasticSearch7.6.x 模板及滚动索引创建及注意事项
ElasticSearch7.6.x 模板及滚动索引创建及注意事项
341 8
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
412 5
|
存储 分布式计算 大数据
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
373 3
|
JSON 自然语言处理 数据库
ElasticSearch基础1——索引和文档。Kibana,RestClient操作索引和文档+黑马旅游ES库导入
概念、ik分词器、倒排索引、索引和文档的增删改查、RestClient对索引和文档的增删改查
ElasticSearch基础1——索引和文档。Kibana,RestClient操作索引和文档+黑马旅游ES库导入
|
存储 搜索推荐 数据建模
Elasticsearch 的数据建模与索引设计
【9月更文第3天】Elasticsearch 是一个基于 Lucene 的搜索引擎,广泛应用于全文检索、数据分析等领域。为了确保 Elasticsearch 的高效运行,合理的数据建模和索引设计至关重要。本文将探讨如何为不同的应用场景设计高效的索引结构,并分享一些数据建模的最佳实践。
711 3
|
存储 API 数据库
检索服务elasticsearch索引(Index)
【8月更文挑战第23天】
1143 6
|
JSON 自然语言处理 数据库
Elasticsearch从入门到项目部署 安装 分词器 索引库操作
这篇文章详细介绍了Elasticsearch的基本概念、倒排索引原理、安装部署、IK分词器的使用,以及如何在Elasticsearch中进行索引库的CRUD操作,旨在帮助读者从入门到项目部署全面掌握Elasticsearch的使用。