ElasticSearch 根据环境自动创建动态索引

编程入门 行业动态 更新时间:2024-10-13 22:19:50

ElasticSearch 根据环境自动创建动态<a href=https://www.elefans.com/category/jswz/34/1771159.html style=索引"/>

ElasticSearch 根据环境自动创建动态索引

        我的客户端的版本是7.13.0,对应springboot与spring-data-elasticsearch的版本如下:(2.5.8与4.2.7)

        引入依赖:

       <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency>

   

@Document(indexName = "#{@active}"+"_"+ElasticSarchConstants.ES_INDEX_PRODUCT)
其中#{@active}"根据开发环境动态切换:
package com.qihong.common.es.config;import lombok.Getter;import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;/*** @author zhg* @create 2022/6/9*/
@Configuration
@Component
@Getter
public class ActiveBean
{//读取环境配置@Value("${spring.profiles.active}")private String active;@Beanpublic String active(){return active;}
}

 1、创建es mapping类 

package com.qihong.common.es.domain;import com.qihong.common.es.constant.ElasticSarchConstants;
import lombok.Data;import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.*;
import org.springframework.data.elasticsearch.core.geo.GeoPoint;/*** @author zhg* @create 2022/6/9*/@Data
@Configuration
@Setting(replicas = 0,shards = 1)
@Document(indexName = "#{@active}"+"_"+ElasticSarchConstants.ES_INDEX_PRODUCT)
public class ProductStoreEs {@Id@Field(type = FieldType.Long)private Long productId;@Field(type = FieldType.Text,analyzer = "ik_smart")private String productName;@Field(type = FieldType.Text,analyzer = "ik_smart")private String storeName;//经纬度保存@GeoPointFieldprivate GeoPoint location;@Field(type = FieldType.Long)private Long siteId;@Field(type = FieldType.Long)private Long storeId;@Field(type = FieldType.Integer)private Integer status;
}

2、启动服务模块自动创建索引,与mapping

package com.qihong.common.es.config;import org.reflections.Reflections;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;import java.util.Set;/*** @author zhg* @create 2022/5/20*/@Configuration
public class ElasticSearchStartCreateIndex implements ApplicationListener<ContextRefreshedEvent> {@Autowiredprivate ElasticsearchRestTemplate restTemplate;@Overridepublic void onApplicationEvent(ContextRefreshedEvent event) {Reflections reflections = new Reflections("com.qihong.common.es.domain");Set<Class<?>> typesAnnotatedWith = reflections.getTypesAnnotatedWith(Document.class);for (Class<?> clazz: typesAnnotatedWith) {if(!restTemplate.indexOps(clazz).exists()){restTemplate.indexOps(clazz).create();restTemplate.indexOps(clazz).putMapping(clazz);}}}
}

更多推荐

ElasticSearch 根据环境自动创建动态索引

本文发布于:2023-06-29 08:34:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/942171.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:索引   环境   动态   ElasticSearch

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!