我的客户端的版本是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; @Bean public String active(){ return active; } }
1、创建es mapping类 文章来源:https://www.toymoban.com/news/detail-554548.html
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;
//经纬度保存
@GeoPointField
private 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文章来源地址https://www.toymoban.com/news/detail-554548.html
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> {
@Autowired
private ElasticsearchRestTemplate restTemplate;
@Override
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);
}
}
}
}
到了这里,关于ElasticSearch 根据环境自动创建动态索引的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!