• 【Elasticsearch】结合Postman/ApiPost 快速入门


            相比于MySQL那种关系型数据库,是采用正排索引,也就是根据主键去找其对应的行数据。而Elasticsearch这个NoSQL,是采用倒排索引,根据输入的某值返回其它整行的数据。而Elaticsearch是采用RESTful风格的数据库访问,以下就是测试案例。

    Put

            用来创建索引,只需要在路径后加上想要的索引名称即可以添加索引。如user就是索引名称。这里需要注意的是,如果这个方法发送第二次就会出现错误。

            从第二次发送的这个报错信息可以看出,是因为这索引名称已经存在了所以就会出现错误,这就是幂等性问题。幂等性:同一个操作的重复执行都会返回同一个结果。所以说这个Put方法对于同一个索引名称只能够使用一次操作。

    Get

    查询单个索引

    查询全部索引

    Delete

    POST

            这里需要注意的是路径上的"_doc"是必定的关键字。这个Post方法就是非幂等性的,每次插入的时候返回的值却是不同的。具体以下面两张图返回的_id可以看出,返回的id不同,所以就不属于幂等性。这里我所给的JSON数据如下。

    {

        "name": "zhangsan",

        "age": 18,

        "sex": "男"

    }

            当然,我测试过能够将id改为自己想给的值,还是可以成功的。

    从这里开始要注意以上的操作当这个索引中有三个值:

    1、{"name": "zhangsan",age: 18}

    2、{"name": "zhangsan",age: 18}

    3、{"name": "wangwu",age: 18}

    主键查询

    全查询

    修改数据

            采用Put方法去更新的话表示全量数据更新。也就是说把这_id = 1的这行数据全部替换成我们想要的数据。但其实我们经常只是局部数据更新。并不需要全部进行修改。

            查询一下更新后的数据。http://localhost/user/_doc/1。可以看到"zhangsan"变为"lisi"了

            那么就需要采用Post方法去实现局部数据更新。需要注意的是路径上已经不是"_doc"了,而是需要改为"_update"。采用前者表示新增,采用后者表示更新。

      查询一下更新后的数据。http://localhost/user/_doc/1。可以看到"lisi"变为"wangwu"了

    条件查询

    单条件查询

    路径

            需要在方法路径的"_search"后加上"?q=name:zhangsan"。其中"q"表示query,而"name"表示查询条件,"zhangsan"表示查询内容。

    请求体

            在请求体放入以下JSON格式。其中match中的就是查询条件。

    {

        "query": {

            "match": {

                "name": "zhangsan"

            }

        }

    }

    多条件查询

    全匹配

            请求头中的JSON数据如下,其中"must"表示的就是全匹配,即都需要满足"match"中的条件。条件为:name = "zhangsan" AND age = 18

    {

        "query": {

            "bool": {

                "must": [

                    {

                        "match": {

                            "name": "wangwu"

                        }

                    },

                    {

                        "match": {

                            "age": 18

                        }

                    }

                ]

            }

        }

    }

    部分匹配

            而改为部分匹配,则需要将"must"改为"should"。条件为:name = "wangwu" OR age = 18

    {

        "query": {

            "bool": {

                "should": [

                    {

                        "match": {

                            "name": "wangwu"

                        }

                    },

                    {

                        "match": {

                            "age": 18

                        }

                    }

                ]

            }

        }

    }

    分页查询

            也是采用Get方法,在请求体中加入以下JSON数据。其中"from"表示当前页,"size"表示每页条数。这其实在Java中的MyBatis框架中也有,只不过不叫"from",而是叫"page"。

    {

        "query": {

            "match_all": {}

        },

        "from": 0,

        "size": 2

    }

  • 相关阅读:
    600+,亮眼数据背后的康铂酒店品牌硬实力
    【C++】STL容器——list类的使用指南(含代码演示)(13)
    聚类-层次聚类(谱系聚类)算法
    C++的STL--->map和set容器的使用
    centos 编译安装的php多版本 切换
    dangzero环境配置问题
    SpringCloudGateway网关中各个过滤器的作用与介绍
    分类问题常用算法之决策树、随机森林及python实现
    力扣算法:LC 704-二分查找,LC 27-移除元素--js
    用jQuery实现旋转木马效果(带前后按钮和索引按钮)
  • 原文地址:https://blog.csdn.net/m0_65563175/article/details/131142418