Skip to content

elasticsearch整合boot

一、配置文件

配置文件:

properties
 # 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)

java
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;

@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();
    }
}