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 */ public class ActiveBean { //读取环境配置 private String active; public 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
-
*/
-
-
-
-
-
-
public class ProductStoreEs {
-
-
-
-
private Long productId;
-
-
-
private String productName;
-
-
-
private String storeName;
-
-
//经纬度保存
-
-
private GeoPoint location;
-
-
-
private Long siteId;
-
-
-
private Long storeId;
-
-
-
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
-
*/
-
-
-
public class ElasticSearchStartCreateIndex implements ApplicationListener<ContextRefreshedEvent> {
-
-
-
private ElasticsearchRestTemplate restTemplate;
-
-
-
public 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);
-
}
-
}
-
-
}
-
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfhiiea
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01