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.主分片与副本分片数无法设置