Skip to content

elasticsearch整合boot

一、配置文件

配置文件:

 # ELASTICSEARCH (ElasticsearchProperties)
spring.data.elasticsearch.cluster-name=elasticsearch # Elasticsearch cluster name.集群名
spring.data.elasticsearch.cluster-nodes=localhost:9300 # Comma-separated list of cluster node addresses.节点名
spring.data.elasticsearch.repositories.enabled=true # Whether to enable Elasticsearch repositories.开启repository

二、es与redis整合,注入容器错误

增加ElasticConfig类,如果没有自定义配置Redis,注解改为@AutoConfigureBefore(RedisAutoConfiguration.class)

import org.elasticsearch.client.Client;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
import org.springframework.data.elasticsearch.core.convert.MappingElasticsearchConverter;
import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext;

/**
 * @Description elastic配置类,防止redis启动加载在elastic加载之前,然后报错
 * @Author lcy
 * @Date 2019/11/7 17:00
 */

@Configuration
@AutoConfigureBefore(RedisConfig.class)
public class ElasticConfig {

    @PostConstruct
     void init() {
         System.setProperty("es.set.netty.runtime.available.processors", "false");
     }

    @Bean
    public ElasticsearchTemplate elasticsearchTemplate(Client client,
            ElasticsearchConverter converter){
        try {
            return new ElasticsearchTemplate(client,converter);
        } catch (Exception ex) {
            throw new IllegalStateException(ex);
        }
    }

    @Bean
    public ElasticsearchConverter elasticsearchConverter(
            SimpleElasticsearchMappingContext mappingContext){
        return new MappingElasticsearchConverter(mappingContext);
    }

    @Bean
    public SimpleElasticsearchMappingContext mappingContext(){
        return new SimpleElasticsearchMappingContext();
    }

}