Elasticsearch |
您所在的位置:网站首页 › 数据库中如何创建索引 › Elasticsearch |
文章目录:
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 |