利用 Spring Boot 整合 ES
Elasticsearch(简称 ES),是一个全文搜索引擎,同时可以作为 NoSQL 数据库,存储任意格式的文档和数据,也可以用于大数据的分析与统计。
ES是 Apache 开源的产品,其主要具有以下特点:
- 以 Lucene 为底层进行封装,为用户提供了一套简单、易用、风格一致的 RESTful 风格的 API 接口;
- 它以一种分布式的搜索引擎架构为用户提供服务,可以很容易的扩展到上百个节点,甚至更多,使系统具备高可用、高并发等特性;
- 支持 PB 级别数据查询,其主要用于大数据的查询、搜索、统计分析等。
通常用来操作 ES 的客户端有如下几种:
- TransportClient
- JestClient
- Spring Data Elasticsearch
- HttpClient
其中 HttpClient 主要是利用 ES 的原生 API 对其进行操作,在开发中不是太灵活,因此通常情况下不会选择其对 ES 进行操作。
利用 TransportClient、Spring Data Elasticsearch 对 ES 操作很方便。但随着 ES 版本的变更,相关的 API 也在不断的调整,因此有 ES 服务端版本变更之后,客户端的代码也要随之进行重新编写。
JestClient 对 ES 进行了封装,填补了 ES 在 HTTP Rest 接口客户端上的空白,它适用于 ES 2.0 以上的版本,无需因为 ES 服务端版本更改而对代码进行修改。本文我们将重要讲解 JestClient 客户端对 ES 的操作。
利用 JestClient 作为客户端对 ES 进行操作
该操作过程主要包括9步,接下来我们一一做下讲解。
1. 在 pom 文件中添加依赖,代码如下:
<dependency>
<groupId>io.searchbox</groupId>
<artifactId>jest</artifactId>
<version>5.3.3</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.3.0</version>
</dependency>
2. 在 application.yml 配置文件中添加 ES 连接配置信息,代码如下:
spring:
elasticsearch:
jest:
url: http://******:9200
username: ***
password: *****
readTimeout: 20000
connectionTimeout: 20000
3. 读取配置信息:
@Configuration
@ConfigurationProperties(prefix = "spring.elasticsearch.jest")
public class EsClientConfiguration {
/**
* ES连接url
*/
private String url;
/**
* ES连接用户名
*/
private String username;
/**
* ES连接用密码
*/
private String password;
/**
* ES 读取超时时间
*/
private Integer readTimeout;