ElasticSearch快速入门
知识储备
学习ElasticSearch之前可以先了解一下lucene,这里是我整理的一篇关于lucene的笔记(传送门),对搜索框架有兴趣的还可以了解一下另一款企业级搜索应用服务器---solr(传送门)
一.ElasticSearch概述
1.简介
ElasticSearch是一个基于Lucene的分布式搜索服务器,提供Restful API,采用shard(分片)的方式保证数据安全,并提供自动resharding的功能,github等大型站点就是采用了ES作为其搜索服务。目前开源的ES已经成为全球搜索引擎的首选,它可以快速的存储、搜索和分析海量数据。SpringBoot通过整合SpringData ElasticSearch为我们提供了非常便捷的检索功能支持。
二.ElasticSearch 安装
1.使用docker安装ES
docker pull registry.docker-cn.com/library/elasticsearch
2.使用docker启动ES
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name ES01 5acf0e8da90b
说明:9200 是web通信端口,9300是分布式节点通信端口,ES默认占用2G的堆内存空间,一般直接启用的话,一定会报错,所以我们还要使用ES_JAVA_OPTS设置JVM堆内存大小。
2.测试ES是否启动
使用浏览器访问:虚拟机ip地址:9200若成功响应下面的json数据说明ES已经成功启动了。
三.ES的基本使用
ES官网为我们提供了详细的文档,而且很人性化地提供了中文文档,所以学习起来十分方便。
ES可以通过Restful API来CRUD数据,可以使用PostMan简单尝试一下。
1.存储一条文档
2.检索文档
检索数据使用get请求:
响应数据:
3.检测是否有该数据
使用head请求:
注意head请求没有返回响应体,可以通过返回的状态码判断是否存在数据,200表示有,404表示没有。
4.删除文档
使用delete请求可以删除文档:
5.更新文档
更新文档同样使用put请求,新的文档会将旧的文档覆盖:
返回的时候version版本变为2了,表示数据已经更新:
6.检索employee下的所有数据
注意:请求的时候要把body里的数据清空,不然会报下面的错误:
7.条件查询
查询last_name为Wang的员工。
也可以使用json条件查询,由于get没有请求体,可以改为用post请求:
8.更高级查询
查询last_name为Wang,并且年龄大于30的员工
9.全文检索
匹配about中含有hello或者w的员工信息。
10.短语搜索
想当于精确匹配,例如找到about为hello,world的员工信息。
11.高亮搜索
返回值里会为高亮的字段自动加上HTML标签: