ElasticSearch学习笔记
Elasticsearch学习笔记(一)
Elasticsearch是一个分布式的、RESTful风格的搜索和数据分析引擎。
安装Elasticsearch
安装Elasticsearch,这里选择在Windows电脑中安装。[Elasticsearch官网Windows下载地址](Past Releases of Elastic Stack Software | Elastic)
下载完之后打开解压文件,进入文件夹
进入到bin目录打开elasticsearch.bat文件,就可以启动Elasticsearch。
启动之后可以通过localhost:9200访问,查看测试结果
Restful风格
REST指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。REST表象化状态转变(表述性状态转变),基于HTTP、URI、XML、JSON等标准和协议,支持轻量级、跨平台、跨语言的架构设计。是Web服务的一种新的架构风格(一种思想)。在REST样式的Web服务中,每个资源都有一个地址。资源本身都是方法调用的目标,方法列表对所有资源都是一样的。
RESTful架构的主要原则
- 对网络上所欲的资源都有一个资源标识符
- 对资源的操作不会改变标识符。
- 同一资源有多种表现形式(xml、json)
- 所有操作都是无状态的(Stateless)
符合上述REST原则的架构方式称为RESTful
安装Postman
为了方便进行客户端的访问,使用Postman软件。
Postman是一款强大的页面调试工具,提供功能强大的WebAPI和HTTP请求调试。软件功能强大,界面简洁清晰,操作方便快捷。
Elasticsearch数据格式
Elasticsearch是面向文档型数据库,一条数据就是一个文档。下面是Elasticsearch存储文档数据和MySQL存储数据的一个比较。
ES中的Index可以看成一个库,Types相当于表,Documents相当于表的行。在Elasticsearch 7.x中,Type的概念已经被删除了,就是一个索引下面只能有一种类型。
ES中的_doc是什么意思
_ doc就代表映射类型,Elasticsearch 7.x中一个索引中只能有一个type,因此_ doc就代表该类型,所以你会发现在想索引中添加文档时使用_ doc添加后,再在该索引下添加文档使用food,查询时,类型全为food。
索引操作
1)创建索引
在Elasticsearch中创建索引就等同于创建数据库
向ES服务器发出PUT
方式的请求:localhost:9200/shopping
,就是创建索引。
如果重复添加索引会返回错误信息。
2)查看所有的索引
向ES服务器发送GET
请求:localhost:9200/_cat/indices?v
_cat 表示查看的意思,indices表示索引
- health:表示当前服务器状态:green(集群完整)yellow(单点正常、集群不完整)red(单点不正常)
- status:索引打开关闭状态
- index:索引名
- uuid:索引统一编号
- pri:主分片数量
- rep:副本数量
- docs.count:可用文档数量
- docs.deleted:文档删除状态(逻辑删除)
- store.size:主分片和副分片整体占空间大小
- pri.store.size:主分片占空间大小
3)查看单个索引
向ES服务器发送GET
请求:localhost:9200/shopping
4)删除索引
向ES服务器发送DELETE
请求:localhost:9200/shopping
删除之后再查看会返回索引不存在的信息
文档操作
1)创建文档
索引已经创建好了接下来就可以创建文档,并添加数据了。文档就相当于关系型数据库中的表数据,添加的数据格式为JSON格式。
向ES服务器发送POST
请求:localhost:9200:/shopping/_doc
,同时需要加上请求体:
{"title": "面包",
"price": 10
}
发送请求的方式必须为POST,不能是PUT,否则会返回错误信息
在创建数据时,没有指定数据唯一性标识(ID),索引,默认的ES服务器会随机生成一个。
也可以自定义唯一性标识,即在创建时指定
localhost:9200/shopping/_doc/1001
2)查看文档
查看文档时,需要指明文档的唯一性标识
向ES服务器发送GET
请求:localhost:9200/shopping/food/1
查看索引所有数据
向ES服务器发送GET
请求:localhost:9200/shopping_search
3)修改文档
和新增文档一样,需要修改时,在请求体中修改字段同时请求方式可以为PUT和POST请求。
向ES服务器发送PUT,POST
请求:localhost:9200/shopping/food/1001
,
同时在请求体中修改字段:
{
"title": "西游记",
"price": 23
}
其中version为版本号。
4)修改字段
向ES服务器发送POST
请求:localhost:9200/shopping/_update/1001
同时请求体内容为:
{
"doc":{
"title":"甜甜圈11"
}
}
5)删除文档
向ES服务器发送DELETE
请求:localhost:9200/shopping/_doc/1002
删除文档不会立即从磁盘中删除,只是先将该文档标记为删除。
6)条件删除文档
还可以根据条件对多条文档数据进行删除
向ES服务器发送PSOT
请求:localhost:9200/shopping/_delete_by_query
其中相应数据中的took字段代表耗时。
还可以通过请求体条件进行查询
{
"query":{
"match":{
"title":"西游记"
}
}
}