• Elasticsearch-02-es的restapi使用


    前言:

    在此大家的前置知识是了解restful风格的接口以及会使用postman工具
    Restful接口详解

    1:索引操作

    1:创建索引

    在 Postman 中, 向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/索引名
    在这里插入图片描述

    {
    “acknowledged” 【响应结果】 : true, # true 操作成功
    “shards_acknowledged” 【分片结果】 : true, # 分片操作成功
    “index” 【索引名称】 : “myindex”
    }
    注意:创建索引库的分片数默认 1 片,在 7.0.0 之前的 Elasticsearch 版本中,默认 5 片

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

    2:查看所有索引

    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/_cat/indices?v
    在这里插入图片描述

    这里请求路径中的_cat 表示查看的意思, indices 表示索引,所以整体含义就是查看当前 ES
    服务器中的所有索引,就好像 MySQL 中的 show tables 的感觉,服务器响应结果如下
    在这里插入图片描述

    3:查看单个索引

    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/myindex
    在这里插入图片描述

    {
        "shopping"【索引名】: {
            "aliases"【别名】: {
                
            },
            "mappings"【映射】: {
                
            },
            "settings"【设置】: {
                "index"【设置-索引】: {
                    "creation_date"【设置-索引-创建时间】: "1614265373911",
                    "number_of_shards"【设置-索引-主分片数量】: "1",
                    "number_of_replicas"【设置-索引-副分片数量】: "1",
                    "uuid"【设置-索引-唯一标识】: "eI5wemRERTumxGCc1bAk2A",
                    "version"【设置-索引-版本】: {
                        "created": "7080099"
                    },
                    "provided_name"【设置-索引-名称】: "shopping"
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    4:删除索引

    在 Postman 中, 向 ES 服务器发 DELETE 请求 :http://127.0.0.1:9200/shopping
    在这里插入图片描述

    2:文档操作

    1:创建文档

    在 Postman 中, 向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/myindex/_doc
    在这里插入图片描述
    上面的数据创建后, 由于没有指定数据唯一性标识(ID), 默认情况下, ES 服务器会随机
    生成一个。
    如果想要自定义唯一性标识,需要在创建时指定:http://127.0.0. 1:9200/myindex/_doc/1
    在这里插入图片描述

    2:查看文档

    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/shoppin/_doc/1
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/d39e37e9a73643b68d3f48da16a6b84f.pn

    在这里插入图片描述

    3:修改文档-全覆盖

    和新增文档一样,输入相同的 URL 地址请求,如果请求体变化,会将原有的数据内容覆盖
    在 Postman 中, 向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/shopping/_doc/1
    在这里插入图片描述
    在这里插入图片描述

    4:修改文档-修改单个字段

    向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/shopping/_doc/1,请求体发生改变
    在这里插入图片描述

    5:删除文档

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

    6:根据条件删除文档

    一般删除数据都是根据文档的唯一性标识进行删除,实际操作时,也可以根据条件对多条数据进行删除

    向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/shopping/_delete_by_query
    在这里插入图片描述
    在这里插入图片描述

    3:映射操作

    有了索引库,相当于雨数据库中的database;
    接下来就需要建索引库(index)中的映射了, 类似于数据库(database)中的表结构(table)。
    创建数据库表需要设置字段名称,类型, 长度, 约束等; 索引库也一样,需要知道这个类型 下
    有哪些字段, 每个字段有哪些约束信息,这就叫做映射(mapping)。

    1:创建映射

    在 Postman 中, 向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/索引名/_mapping
    注:前提是先创建索引,才可以创建映射
    在这里插入图片描述

    映射数据说明:

    • 字段名:任意填写, 下面指定许多属性, 例如:title 、subtitle 、images 、price
    • type:类型, Elasticsearch 中支持的数据类型非常丰富,说几个关键的:
      • String 类型,又分两种:
        * text:可分词
        * keyword:不可分词,数据会作为完整字段进行匹配
      • Numerical:数值类型,分两类
        • 基本数据类型: long 、integer、short 、byte 、double、float 、
        • half_float 浮点数的高精度类型:scaled_float
      • Date: 日期类型
      • Array:数组类型
      • Object:对象
    • index:是否索引,默认为 true ,也就是说你不进行任何配置,所有字段都会被索引。
      • true:字段会被索引,则可以用来进行搜索
      • false:字段不会被索引, 不能用来搜索
    • store:是否将数据进行独立存储,默认为 false原始的文本会存储在_source 里面, 默认情况下其他提取出来的字段都不是独立存储的,是从_source 里面提取出来的。当然你也可以独立的存储某个字段, 只要设置"store":true 即可, 获取独立存储的字段要比从_source 中解析快得多,但是也会占用
      更多的空间,所以要根据实际业务需求来设置。
    • analyzer:分词器, 可以使用ik_max_word 即使用 ik 分词器,后面会有专门的章节学习

    2:查看映射

    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_mapping
    在这里插入图片描述

    3:索引关系映射

    在 Postman 中, 向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/student1
    这种可以直接创建索引以及对映的映射,不需要提前创建index

    在这里插入图片描述

    4:为索引新增字段及对应索引

    在 Postman 中, 向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/student1/_mapping
    不可以使用/student1然后mapping的方式,那样会提示索引已存在
    在这里插入图片描述

    5:索引字段类型为text,添加keyword类型操作

    • text类型:会进行分词;分词后建立索引;支持模糊查询;支持准确查询;不支持聚合查询。
    • keyword类型:不会分词;直接建立索引;支持模糊查询;支持准确查询;支持聚合查询。

    如果有时候我们我们对于一个text类型的字段即希望他能够分词,又希望他精确索引,那么我们就可以给这个字段设置为text,并加上keyword类型操作,当然,如果我们创建索引时不指定映射,es的自动动态映射也可以设置成这样:
    在这里插入图片描述

    在这里插入图片描述

    4:高级查询

    1:查询所有文档-search

    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student1/_search

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

    在这里插入图片描述

    结果解析:
    在这里插入图片描述

    2:匹配查询-match

    match 匹配类型查询,会把查询条件进行分词, 然后进行查询, 多个词条之间是 or 的关系
    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student1/_search

    {
        "query":{
            "match":{
                "name":"张三"
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    3:多字段匹配查询-multi_match

    multi_match 与 match 类似,不同的是它可以在多个字段中查询。
    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
    在这里插入图片描述

    4:关键字精确查询-term

    term 查询,精确的关键词匹配查询, 不对查询条件进行分词。
    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
    前提:这个name2必须是keyword类型的字段

    在这里插入图片描述

    5:多关键字精确查找-terms

    terms 查询和 term 查询一样,但它允许你指定多值进行匹配。
    如果这个字段包含了指定值中的任何一个值, 那么这个文档满足条件, 类似于 mysql 的 in
    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
    在这里插入图片描述

    6:指定字段查询-(_source)

    默认情况下,Elasticsearch 在搜索的结果中,会把文档中保存在_source 的所有字段都返回
    。 如果我们只想获取其中的部分字段, 我们可以添加_source 的过滤
    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
    在这里插入图片描述

    7:过滤字段-(includes)

    我们也可以通过:

    • includes:来指定想要显示的字段
    • excludes:来指定不想要显示的字段
      在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
      在这里插入图片描述

    8:组合查询-bool

    bool把各种其它查询通过must (必须 )、 must_not (必须不)、 should (应该)
    的方 式进行组合
    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
    在这里插入图片描述

    9:范围查询-range

    range 查询找出那些落在指定区间内的数字或者时间。 range 查询允许以下字符
    在这里插入图片描述
    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
    在这里插入图片描述

    10:模糊查询-fuzzy

    返回包含与搜索字词相似的字词的文档。
    编辑距离是将一个术语转换为另一个术语所需的一个字符更改的次数。这些更改可以包括:

    • 更改字符(box → fox)
    • 删除字符(black → lack)
    • 插入字符(sic → sick)
    • 转置两个相邻字符(act → cat)

    为了找到相似的术语,fuzzy 查询会在指定的编辑距离内创建一组搜索词的所有可能的变
    体 或扩展。然后查询返回每个扩展的完全匹配。
    通过 fuzziness 修改编辑距离。一般使用默认值 AUTO ,根据术语的长度生成编辑距离。

    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
    在这里插入图片描述

    11:单字段排序-sort

    sort 可以让我们按照不同的字段进行排序, 并且通过 order 指定排序的方式。 desc 降序, asc
    升序。
    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
    在这里插入图片描述

    12:多字段排序-sort

    假定我们想要结合使用 age 和 _score 进行查询, 并且匹配的结果首先按照年龄排序,然
    后 按照相关性得分排序
    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
    在这里插入图片描述

    13:分页查询-from$size

    from:当前页的起始索引,默认从 0 开始。 from = (pageNum - 1) * size
    size:每页显示多少条
    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
    在这里插入图片描述

    14:聚合查询-count,max,min,avg,sum

    聚合允许使用者对 es 文档进行统计分析, 类似与关系型数据库中的 group by,当然还有很
    多其他的聚合, 例如取最大值、平均值等等。
    对某个字段取最大值 max
    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
    在这里插入图片描述

    对某个字段取最小值 min
    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
    在这里插入图片描述

    对某个字段在查出的结果集中取和 sum
    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
    在这里插入图片描述

    对某个字段在查出的结果集中取平均值 avg
    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
    在这里插入图片描述

    对某个字段的值进行去重之后再取总数
    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
    在这里插入图片描述

    State 聚合
    stats 聚合, 对某个字段一次性返回 count ,max ,min ,avg 和 sum 五个指标
    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
    在这里插入图片描述

    15:桶聚合查询(group by分组)- terms

    桶聚和相当于 sql 中的 group by 语句
    terms 聚合,分组统计
    在 Postman 中, 向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search
    在这里插入图片描述
    在桶聚合分组查询后再进行聚合查询
    在这里插入图片描述

  • 相关阅读:
    使用js 完成chrome web 自动化或者爬虫模版例子
    iNFTnews | 元宇宙浪潮下,企业正通过AR和VR技术改善客户体验
    合并文件系统中的满足条件的文件的行
    Vault系列之:创建令牌
    开源在线表单工具 HeyForm 使用教程
    es从线上库导出数据并导入开发环境
    Prometheus监控的搭建(ansible安装——超详细)
    银行分布式存储基础设施创新实践分享
    【代码随想录】算法训练营 第三天 第二章 链表 Part 1
    制作一个简单HTML公司官网网页设计(HTML+CSS)
  • 原文地址:https://blog.csdn.net/qq_41694906/article/details/125490179