1.Elasticsearch 是什么
The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。
Elaticsearch,简称为 ES,ES 是一个开源的高扩展的分布式全文搜索引擎,是整个 Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。
2.全文搜索引擎
主要解决结构化数据搜索和非结构化数据搜索;
它的工作原理是计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。
3.ElasticSearch与Solr比较
ES:JSON,RESFUL接口,大数据量;内置分布式管理;
SOLR:多种JSON、XML,WEBService接口;ZK管理;
4.Window安装ES
Windows 版的 Elasticsearch 的安装很简单,解压即安装完毕,解压后的 Elasticsearch 的目录结构如下

| 目录 |
含义 |
| bin |
可执行脚本目录 |
| config |
配置目录 |
| jdk |
内置 JDK 目录 |
| lib |
类库 |
| logs |
日志目录 |
| modules |
模块目录 |
| plugins |
插件目录 |
解压后,进入 bin 文件目录,点击 elasticsearch.bat 文件启动 ES 服务

注意:9300 端口为 Elasticsearch 集群间组件的通信端口,9200 端口为浏览器访问的 http协议 RESTful 端口。
打开浏览器(推荐使用谷歌浏览器),输入地址:http://localhost:9200,测试结果

双击启动窗口闪退,通过路径访问追踪错误,如果是“空间不足”,请修改config/jvm.options 配置文件

4.1 ES基本操作
RESTful
REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。
在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI (Universal Resource Identifier) 得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、PUT、POST 和DELETE,还可能包括 HEAD 和 OPTIONS。简单的理解就是,如果想要访问互联网上的资源,就必须向资源所在的服务器发出请求,请求体中必须包含资源的网络路径,以及对资源进行的操作(增删改查)。
Postman
Postman 是一款强大的网页调试工具,提供功能强大的 Web API 和 HTTP 请求调试。软件功能强大,界面简洁明晰、操作方便快捷,设计得很人性化。Postman 中文版能够发送任何类型的 HTTP 请求 (GET, HEAD, POST, PUT..),不仅能够表单提交,且可以附带任意类型请求体。

4.2数据格式
Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档。为了方便大家理解, 我们将 Elasticsearch 里存储文档数据和关系型数据库 MySQL 存储数据的概念进行一个类比

ES里的Index可以看成一个库,Types相当于表,Documents相当于表的行。
7之后没有Types;一个index下已经只能包含一个type;
用JSON 作为文档序列化的格式,比如一条用户信息:

5.HTTP操作
5.1索引操作
1.创建索引
index类似与关系型数据库的库;
对比关系型数据库,创建索引就等同于创建数据库;
在 Postman 中,向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/shopping

如果重复添加索引,会返回错误信息

再次插入错误

2.查看所有索引
![]()
在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/_cat/indices?v
这里请求路径中的_cat 表示查看的意思,indices 表示索引,所以整体含义就是查看当前 ES
服务器中的所有索引,就好像 MySQL 中的 show tables 的感觉,服务器响应结果如下

| 表头 |
含义 |
| health |
当前服务器健康状态: green(集群完整) yellow(单点正常、集群不完整) red(单点不正常) |
| status |
索引打开、关闭状态 |
| index |
索引名 |
| uuid |
索引统一编号 |
| pri |
主分片数量 |
| rep |
副本数量 |
| docs.count |
可用文档数量 |
| docs.deleted |
文档删除状态(逻辑删除) |
| store.size |
主分片和副分片整体占空间大小 |
| pri.store.size |
主分片占空间大小 |
3.查看单个索引
![]()
在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/shopping
查看索引向 ES 服务器发送的请求路径和创建索引是一致的。但是 HTTP 方法不一致。这里可以体会一下 RESTful 的意义,
请求后,服务器响应结果如下:


4.删除索引
![]()
在 Postman 中,向 ES 服务器发 DELETE 请求 :http://127.0.0.1:9200/shopping

重新访问索引时,服务器返回响应:索引不存在
![]()

5.2文档操作
1.创建文档
索引已经创建好了,接下来我们来创建文档,并添加数据。这里的文档可以类比为关系型数据库中的表数据,添加的数据格式为 JSON 格式。
文档类比关系数据库中的表;
在Postman 中,向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/shopping/_doc 请求体内容为



此处发送请求的方式必须为 POST,不能是 PUT,否则会发生错误

上面的数据创建后,由于没有指定数据唯一性标识(ID),默认情况下,ES 服务器会随机生成一个。
如果想要自定义唯一性标识,需要在创建时指定:http://127.0.0.1:9200/shopping/_doc/1

POST随机产生一个ID值;指定唯一ID后,可以是PUT

此处需要注意:如果增加数据时明确数据主键,那么请求方式也可以为 PUT
2.查看文档
查看文档时,需要指明文档的唯一性标识,类似于 MySQL 中数据的主键查询
在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/shopping/_doc/1
![]()
查看成功后,服务器响应结果:

3.修改文档
和新增文档一样,输入相同的 URL 地址请求,如果请求体变化,会将原有的数据内容覆盖在 Postman 中,向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/shopping/_doc/1
全量更新;请求体内容为:

修改成功后,服务器响应结果:


4.修改字段
修改数据时,也可以只修改某一给条数据的局部信息;每次更新的内容是不同的,所以非幂等性;所以用POST;
在 Postman 中,向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/shopping/_update/1 请求体内容为:
{
"doc":
{ "price":3000.00}
}

修改成功后,服务器响应结果:

5.删除文档
删除一个文档不会立即从磁盘上移除,它只是被标记成已删除(逻辑删除)。
在 Postman 中,向 ES 服务器发 DELETE 请求 :http://127.0.0.1:9200/shopping/_doc/1



再次查询
![]()

如果删除一个并不存在的文档

6.条件查询
1.在 Postman 中,向 ES 服务器发 GET 请求 :通过请求路径实现条件查询;http://127.0.0.1:9200/shopping/_search?q=category:小米
或者http://127.0.0.1:9200/shopping/_search
通过请求体实现条件查询
在body中输入查询条件:
{
"query":{
"match":{
"category":"小米"
}
}
}

2.批量查询:
在Body中输入查询条件:match_all

3.分页查询
7.条件删除文档
一般删除数据都是根据文档的唯一性标识进行删除,实际操作时,也可以根据条件对多条数据进行删除
首先分别增加多条数据:


指定1/2确定的id之后,可以使用PUT

向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/shopping/_delete_by_query
请求体内容为:

删除成功后,服务器响应结果:

映射操作
有了索引库,等于有了数据库中的 database。
接下来就需要建索引库(index)中的映

本文是关于Elasticsearch的基础教程,涵盖了Elasticsearch是什么、全文搜索引擎的概念、与Solr的比较、Windows环境下ES的安装步骤,以及如何通过RESTful API进行索引、文档、映射和高级查询操作。同时,文章还介绍了Postman工具的使用,用于辅助ES的HTTP操作。在查询部分,详细讲解了匹配、范围、模糊、排序和过滤等查询方式,为初学者提供了全面的指南。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



