SpringBoot整合ElasticSearch

添加依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        <version>2.2.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

注意SpringBoot安装的ES依赖,要保持与ES服务的版本保持一致。

配置ES

spring:
    data:
        elasticsearch:
            cluster-name: es6
            cluster-nodes: 192.168.3.214:9300

使用ES客户端连接ES服务的时候,端口号使用的是9200,但是在java中要使用9300,这个需要注意一下。如果是ES集群的话,在nodes后面配置所有的节点地址,用逗号分隔。

Netty issue fix

@Configuration
public class ESConfig {
    /**
     * 解决netty引起的issue
     */
    @PostConstruct
    void init() {
        System.setProperty("es.set.netty.runtime.available.processors", "false");
    } 
}

将上面的类,放到和启动类同级目录下即可。

使用ElasticsearchTemplate注意

不建议使用ElasticsearchTemplate对索引进行管理(创建索引,更新映射,删除索引) 索引就像是数据库或者数据库中的表,我们平时是不会通过Java代码频繁的去创建修改删除数据库的 我们只会针对数据做CURD的操作 在ES中也是同理,我们尽量使用ElasticsearchTemplate对文档数据做CRUD的操作 1.属性(FieldType)类型不灵活 2.主分片与副本分片数无法设置