ElasticSearch学习(一)

ElasticSearch

一、认识ES

1. 数据库查询存在的问题

  • 性能低:使用模糊查询,左边有通配符,不会走索引,会全表扫描,性能低。
  • 功能弱:如果以”华为手机“作为条件,查询有华为和手机这两个词的文本查询不出来数据。

因此就有了ElasticSearch这样一个分布式可扩展的实时搜索和分析引擎。

2. 数据格式

ES是面向文档型数据库,一条数据在这里就是一个文档。

ES与关系型数据库MySQL的对比:

ElasticSearch学习(一)_第1张图片

注:ES在后续版本中Type的概念已经逐渐被弱化了。

二、倒排索引的理解

  • 正排(正向)索引

id content


1001 my name is zhangsan

1002 my name is lisi

适合通过索引查询整个数据行,不适合对数据的位置进行模糊查询。

  • 倒排索引

keyword id


name 1001, 1002

zhangsan 1001

lisi 1002

倒排索引即将数据进行分词,形成词条和id的对应关系,即反向索引。因此它适合通过关键字索引来查询数据项所在的位置。

三、索引操作

1. 索引的作用

ES中的索引就相当于关系型数据库(例如MySQL)中的数据库。

2. 创建索引

对比关系型数据库,创建索引就等同于创建数据库。

在Postman中,向ES服务器发送PUT请求:http://127.0.0.1:9200/shopping

响应如下,创建shopping索引成功:

ElasticSearch学习(一)_第2张图片

3. 查看索引

向ES服务器发送GET请求:http://127.0.0.1:9200/shopping,即可获得对应索引的相关信息。

ElasticSearch学习(一)_第3张图片

4. 查看所有索引信息

向ES服务器发送GET请求:http://127.0.0.1:9200/_cat/indices?v,即可获得对应索引的相关信息,结果如下:

在这里插入图片描述

5. 删除索引

向ES服务器发送DELETE请求:http://127.0.0.1:9200/shopping,即可删除对应索引,响应如下:

ElasticSearch学习(一)_第4张图片

四、 文档操作

1. 创建操作

索引已经创建,接下来需要创建文档,并添加数据。这里的文档可以类比为关系型数据库中的表数据,添加的数据格式为JSON格式。

  • 生成随机id,仅支持POST

向ES服务器发送POST请求:http://127.0.0.1:9200/shopping/_doc,请求体中填入数据的JSON格式信息。

ElasticSearch学习(一)_第5张图片

多次请求则会多次重复创建,返回的随机id都不相同。

  • 自定义id,支持POST和PUT

我们可以自定义生成数据的id,只需要在请求后面加上 /自定义id ,例如:http://127.0.0.1:9200/shopping/_doc/shopping_phone_1002,响应如下:

ElasticSearch学习(一)_第6张图片

多次请求同一id即为修改操作(全量修改),不会重复创建。

  • 使用_create创建,支持POST和PUT

向ES服务器发送请求:http://127.0.0.1:9200/shopping/_create/shopping_phone_1005,多次请求会报错,即使用_create只能创建一次。

2. 查询操作

  • 主键查询

根据id主键查询数据,例如向ES服务器发送GET请求:http://127.0.0.1:9200/shopping/_doc/shopping_phone_1001,可以得到相应的数据。

ElasticSearch学习(一)_第7张图片

如果输入的id没有找到对应的数据,返回如下:

ElasticSearch学习(一)_第8张图片

  • 全查询

查询指定索引下的所有文档,发送GET请求:http://127.0.0.1:9200/shopping/_search,返回结果如下:

ElasticSearch学习(一)_第9张图片

3. 修改操作

  • 全量修改

与创建文档请求方式一致,即向ES服务器发送PUT/POST请求:http://127.0.0.1:9200/shopping/_doc/shopping_phone_1001,请求体中输入修改的数据即可完成此文档的全量更新。

ElasticSearch学习(一)_第10张图片

  • 局部修改

全量修改不太常用,常用的是局部修改的操作,即对文档的局部信息进行更新。

向ES服务器发送POST请求:http://127.0.0.1:9200/shopping/_update/shopping_phone_1001,请求体中的 doc 字段值带上要修改的局部数据即可。

ElasticSearch学习(一)_第11张图片

4. 删除操作

向ES服务器发送DELETE请求:http://127.0.0.1:9200/shopping/_doc/shopping_phone_1002,即可删除id主键对应的文档数据。

ElasticSearch学习(一)_第12张图片

你可能感兴趣的:(elasticsearch,学习,数据库)