zoukankan      html  css  js  c++  java
  • 【基础组件15】elasticsearch 入门(二)Rest基本操作

    参考教程:https://www.bilibili.com/video/av35882450?p=18

    https://www.bilibili.com/video/av35882450?p=23

    补充:json格式说明

    1)对象模式用大括号{}

    {  "key1":"value1",

      "key2":"value2",

      "key3":"value3"

    }

    2) 数组模式用中括号[]

         value里面在嵌套一个”key“:“value” (大括号,中括号均可),相当于一个A

    {

        "name":["A", "B","C"]

    }

    json value嵌套json, 用中括号、大括号都OK

    一、Rest定义

     

     

     二、ES内置的rest接口

    三、REST创建索引库、添加数据(新增 PUT, POST都行) _create接口,新增数据

    1.curl命令

     2.curl创建索引库、添加数据

     以上,第1个是创建索引库,第2个是添加数据,添加数据必须-H, 否则会报错

    3.PUT和POST的区别

    PUT   新增数据

    POST   新增数据

     eg: 往ES中插入数据时,PUT指定了ID,   POST不用指定ID, 

            用PUT插入同一条数据,重复多次,则不会新增数据条数,只是版本数增加了,被修改的还是同一条数据

            用POST插入同一条数据,重复多次,则会新增多条数据,只是自动生成的ID不同

    4. ES创建索引库、添加数据注意事项

    创建索引库tips: IP、端口要单引号

    创建数据tips: -H 双引号 

           IP、端口不用引号

            -d  数据单引号

     四、REST查询数据------GET

             1)根据ID查询

             2)_search?q=查询条件1&查询条件2&pretty   (_search接参数查询)

             3)返回数据在 _source里

             4)_search -d ‘{”query“:{"match":{"name":"qiqi"}}}’  (_search -d '' 接DSL查询)

    1._search 接参数查询 (查询条件是参数)

     总结:1)根据ID查询, 不用加引号

                2)根据ID查询, 只显示某个字段( 用_source=name 参数 ),用单引号,用/test/user/1?_source=name&pretty

                    用?连接参数或第一个参数,_source=name 参数

                    用&连接多个参数,pretty参数,使返回结果json显示

                 3) _search接口查询索引库的所有数据

                 4)根据条件进行查询,用单引号,用_search接口,(用q=查询条件 参数)

                     _search 接口?q=name:john&age=18&pretty

                  5)返回结果在_source里

     _source只显示某个字段

    2._search接DSL查询 (查询条件是一个json串,所以要-H)

    1).match 查询 (先对字段 field 进行分词,再查询,知道分词器的存在)

          match 查询包含多个关键字可用空格或者逗号隔开, 查询结果为包含多个关键字中的任一个即可

     

     

    2) term, terms查询(也适用于没有进行分词的字段查询,如keyword, data, 数字,不进行分词,

         term和terms 都是不能进行分词的(”xiaoming xiaohong“会被当做一个关键词来查询),不知道分词器存在的查询,仅查询包含某个关键词),

         &sort=age:desc 降序查询

         term :查询某字段中包含某个关键词的文档

         terms: 查询某字段中包含多个关键词中任一关键词的文档

     查询结果解释:

    max_score :相关度匹配分数   (1是最大的)

     

    3 )from: 从哪一个开始

          size : 取几个文档

     4)multi_match

          在多个字段中查询某一个关键词,任一字段包含这个关键词,即可查询出来

    5)match_phrase 短语匹配(当作一个整体,必须完全一样的,顺序也一样的,才能查询出来)

     6)可以指定返回的字段

     指定返回的字段时,字段名也可以用通配符* 表示任意多个字符

    7)排序查询,前缀匹配查询

    eg:排序查询

     eg: 前缀匹配查询、范围查询

    8)wildcard查询,通配符查询,可包含?*

        ?代表一个字符

        * 代表一个或多个字符

     9)fuzzy 模糊查询

     

    10)高亮显示 highlight

    五、ES中文查询(ik_max_word, ik_smart)

    先创建索引库,新增文档

    中文查询:

     五、_mget接口查询多个文档 (可跨多个索引库查询)(查询条件是一个json串,所以要-H)

     tips:json串外层{}, 里层的数组用[], 多个数用逗号隔开,最后一个数不需要逗号

    六、HEAD检查文档是否存在

     补充:curl --help

                -i 的解释:

     数据存在,返回如下:

     数据不存在,返回如下:

    七、修改数据(必须用POST) _update接口,修改数据

     八、ES删除- DELETE

     九、_bulk接口,执行批量操作

     

     十、ES版本控制

     十一、filter查询

     

    注意:text类型,默认分词,并且会把大写转换成小写存储,所以用term 大写, 查询不出来

              解决办法,创建mapping时,不让自动索引,或者lowercase 支持大小写转换查询

     

     十二、bool过滤查询

     示例:

    十三、范围过滤、过滤非空

     

    十四、ES的聚合查询

     示例:

    求基数:即互不相同的值的个数

     分组查询:价格相同的为一组

     示例2:

     示例3:分组里再嵌套聚合

     示例4:分组再按平均年龄降序排序

    十五、复合查询

    示例:

    示例:constant_score 表示用一个常量来代替相关度分数,就不计算相关度分数了

  • 相关阅读:
    GitHub上创建项目
    html5的标签中,哪些是行内元素,哪些是块级元素。
    盒子模型及其他的层次结构关系
    二维码生成
    SSH整合笔记
    Spring回顾
    struts2 测试错题解析
    Java Script基础
    Java OOP考试错题分析
    接口的用法及注意点
  • 原文地址:https://www.cnblogs.com/Agnes1994/p/12333995.html
Copyright © 2011-2022 走看看