一、简介
应用经常需要添加检索功能,开源的 ElasticSearch 是目前全文搜索引擎的 首选。他可以快速的存储、搜索和分析海量数据。Spring Boot通过整合Spring Data ElasticSearch为我们提供了非常便捷的检索功能支持;
Elasticsearch是一个分布式搜索服务,提供Restful API,底层基于Lucene,采用 多shard(分片)的方式保证数据安全,并且提供自动resharding的功能,github 等大型的站点也是采用了ElasticSearch作为其搜索服务,
二、安装elasticsearch
采用 docker镜像安装的方式。
#下载镜像
docker pull elasticsearch
#启动镜像,elasticsearch 启动是会默认分配2G的内存 ,我们启动是设置小一点,防止我们内存不够启动失败
#9200是elasticsearch 默认的web通信接口,9300是分布式情况下,elasticsearch个节点通信的端口
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name es01 5c1e1ecfe33a
访问 127.0.0.1:9200 如下图,说明安装成功
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicGcq5iYfZzMjZDZmlzMjV2Y3YWOiJDN5ETOiVmZmdDMhZGO5kTNtIjdvwVbvNmLn1WaopnLzMWaw9CXvwlOzBHd0hWPsJXdmYDM3YjZkJGNzQDNl1SOhRGOtETMiVWLmJTNy0SM2ETOwYWZl1DZpV3ZmITPlBXe0ZyPldWYtl2LcdXZpZ3Lc12bj5SZjVjL5h3byBnLyATLn1Wavw1LcpDc0RHaiojIsJye.jpg)
三、elasticsearch的一些概念
- 以 员工文档 的形式存储为例:一个 文档 代表一个员工数据。存储数据到 ElasticSearch 的行为叫做 索引 ,但在索引一个文档之前,需要确定将文档存 储在哪里。
- 一个 ElasticSearch 集群可以 包含多个 索引 ,相应的每个索引可以包含多个 类型 。这些不同的类型存储着多个 文档 ,每个文档又有 多个 属性 。
- 类似关系:
- 索引-数据库
- 类型-表
- 文档-表中的记录 – 属性-列
elasticsearch使用可以参早官方文档,在这里不在讲解。
四、整合 elasticsearch
创建项目 springboot-elasticsearch,引入web支持 SpringBoot 提供了两种方式操作elasticsearch,Jest 和 SpringData。
Jest 操作 elasticsearch
Jest是ElasticSearch的Java HTTP Rest客户端。
ElasticSearch已经有一个Java API,ElasticSearch也在内部使用它,但是Jest填补了空白,它是ElasticSearch Http Rest接口缺少的客户端。
1. pom.xml
<?xml version="1.0" encoding="UTF-8"?>
2. application.properties
spring.elasticsearch.jest.uris=http://127.0.0.1:9200
3. Article
package
4. springboot测试类
package
Jest的更多api ,可以参照github的文档:https://github.com/searchbox-io/Jest
SpringData 操作 elasticsearch
1. application.properties
spring.data.elasticsearch.cluster-name=elasticsearch
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
2. Book
package
3. BookRepository
package
4. springboot 测试类
package
启动测试 ,发现报错 。
这个报错的原因是springData的版本与我elasticsearch的版本有冲突,下午是springData官方文档给出的适配表。
我们使用的springdata elasticsearch的 版本是3.1.3 ,对应的版本应该是6.2.2版本,而我们是的 elasticsearch 是 5.6.9,所以目前我们需要更换elasticsearch的版本为6.X
docker pull elasticsearch:6.5.1
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name es02 镜像ID
访问127.0.0.1:9200
集群名为docker-cluster,所以我们要修改application.properties的配置了
spring.data.elasticsearch.cluster-name=docker-cluster
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
我们再次进行测试,测试可以通过了 。我们访问http://127.0.0.1:9200/gf/book/1,可以得到我们存入的索引信息。
源码下载:https://github.com/gf-huanchupk/SpringBootLearning