Elasticsearch

您所在的位置:网站首页 数据库中如何创建索引 Elasticsearch

Elasticsearch

2024-07-07 08:46| 来源: 网络整理| 查看: 265

文章目录:

1.Elasticsearch中的数据格式

2.索引操作

2.1 创建索引

2.2 查看指定索引

2.3 查看全部索引

2.4 删除索引

3.文档操作

3.1 创建文档

3.2 查看单个文档:主键查询

3.3 查看所有文档:全查询

3.4 修改文档中的全部字段

3.5 修改文档中的某个字段

3.6 删除文档

3.7 条件查询文档内容

3.8 分页查询 + 排序文档内容

3.9 多条件查询:and

3.10 多条件查询:or

3.11 多条件查询:大于、小于

3.12 全文查询 + 高亮显示

3.13 聚合查询:根据价格分组、对价格求平均值

4.映射操作

1.Elasticsearch中的数据格式

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

ES 里的 Index 可以看做一个库,而 Types 相当于表,Documents 则相当于表的行。这里 Types 的概念已经被逐渐弱化,Elasticsearch 6.X 中,一个 index 下已经只能包含一个 type,Elasticsearch 7.X 中, Type 的概念已经被删除了。

2.索引操作 2.1 创建索引

在ES中创建一个索引,就相当于在mysql中创建了一个数据库,而mysql中的数据库肯定是不能重复的,也即ES中的索引也不能重复,所以这是一个幂等性操作,需要发送PUT请求(如果重复发送PUT请求、重复添加索引,会返回错误信息),这里不能发送POST请求。

2.2 查看指定索引

在 Postman 中,向 ES 服务器发 GET 请求。这里的路径和上面的创建索引是一样的,只是请求方式不一样。

2.3 查看全部索引

在 Postman 中,向 ES 服务器发 GET 请求。

health 当前服务器健康状态:green(集群完整) yellow(单点正常、集群不完整) red(单点不正常)status 索引打开、关闭状态index 索引名uuid 索引统一编号pri 主分片数量rep 副本数量docs.count 可用文档数量docs.deleted 文档删除状态(逻辑删除)store.size 主分片和副分片整体占空间大小pri.store.size 主分片占空间大小

2.4 删除索引

在 Postman 中,向 ES 服务器发 DELETE 请求。

3.文档操作 3.1 创建文档

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

在 Postman 中,向 ES 服务器发 POST 请求。

{ "title":"小米手机", "category":"小米", "image":"http://www.szh.com/szh.jpg", "price":3999.00 }

上面的数据创建后,由于没有指定数据唯一性标识(ID),默认情况下,ES 服务器会随机生成一个。

如果想要自定义唯一性标识,需要在创建时指定。推荐使用下面这种方式创建文档。

3.2 查看单个文档:主键查询

查看文档时,需要指明文档的唯一性标识,类似于 MySQL 中数据的主键查询。在 Postman 中,向 ES 服务器发 GET 请求。

3.3 查看所有文档:全查询

# "query":这里的 query 代表一个查询对象,里面可以有不同的查询属性 # "match_all":查询类型,例如:match_all(代表查询所有), match,term , range 等等 # {查询条件}:查询条件会根据类型的不同,写法也有差异

3.4 修改文档中的全部字段

修改数据时,也可以只修改某一给条数据的局部信息,也可以修改所有字段信息。

修完完之后,再次发送GET请求,查看修改后的文档内容。

{ "title":"OPPO手机", "category":"OPPO", "images":"http://www.szh.com/szh.jpg", "price":2400.00 }

3.5 修改文档中的某个字段 { "doc" : { "title":"VIVO手机", "category":"VIVO" } }

3.6 删除文档

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

3.7 条件查询文档内容

match 匹配类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是 or 的关系。

在 Postman 中,向 ES 服务器发 GET 请求。

上面这种查询方式的请求参数是直接跟在请求路径之后的,这种方式不太好,因为有可能造成乱码问题。

所以一般采用下面这种方式,将请求参数存放在请求体中。

{ "query" : { "match" : { "category" : "华为" } } }

3.8 分页查询 + 排序文档内容

默认情况下,Elasticsearch 在搜索的结果中,会把文档中保存在_source 的所有字段都返回。如果我们只想获取其中的部分字段,我们可以添加_source 的过滤

sort 可以让我们按照不同的字段进行排序,并且通过 order 指定排序的方式。desc 降序,asc 升序。

from:当前页的起始索引,默认从 0 开始。 from = (pageNum - 1) * size。

size:每页显示多少条。

{ "query" : { "match_all" : { } }, "from" : 0, // (页码-1)*每页条数, 第一页:(1-1)*2=0, 第二页:(2-1)*2=2 "size" : 2, "_source" : ["title","price"], "sort" : { "price" : { "order" : "desc" } } }

3.9 多条件查询:and

`bool`把各种其它查询通过`must`(必须 and )、`must_not`(必须不)、`should`(应该 or)的方式进行组合 。

{ "query" : { "bool" : { "must" : [ { "match" : { "category" : "小米" } }, { "match" : { "price" : 3999.00 } } ] } } }

3.10 多条件查询:or

`bool`把各种其它查询通过`must`(必须 and )、`must_not`(必须不)、`should`(应该 or)的方式进行组合 。

{ "query" : { "bool" : { "should" : [ { "match" : { "category" : "VIVO" } }, { "match" : { "price" : 5999.00 } } ] } } }

3.11 多条件查询:大于、小于

range 查询找出那些落在指定区间内的数字或者时间。range 查询允许以下字符: gt 大于>            gte 大于等于>=              lt 小于



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3