美文网首页
ES常用API记录

ES常用API记录

作者: Nzkalhbxx | 来源:发表于2022-08-25 20:45 被阅读0次

    ElasticSearch6.0官方文档: https://www.elastic.co/guide/en/elasticsearch/reference/6.0/getting-started.html
    强烈建议有问题直接去官网看相应部分的文档

    创建索引和类型

    ### 创建索引和类型
    PUT /dangdang
    {
      "mappings": {
        "books": {
          "properties": {
            "id": {
              "type": "keyword"
            },
            "name": {
              "type": "keyword"
            },
            "desc": {
              "type": "text",
              "analyzer": "ik_max_word",
              "search_analyzer": "ik_max_word"
            },
            "price": {
              "type": "double"
            }
          }
        }
      },
      "settings": {
        "number_of_shards": 3,
        "number_of_replicas": 1
      }
    }
    

    向指定的索引中批量插入数据

    注意:批量插入一个JSON串必须在同一行,否则会报错

    POST /dangdang/books/_bulk
    {"index":{}}
    {"id":"001","name":"少有人走的路","desc":"“佛说:万物皆空,空并不是没有,其核心是法无自性”,自律和爱是人生路上非常重要的课题,在某些方面自律,只能解决某些问题,全面的自律才能解决人生所有的问题。的","price":11}
    {"index":{}}
    {"id":"002","name":"正念的奇迹","desc":"什么是真正的自由,真正的自由不是为所欲为,一个人为所欲为是最不自由的。不要做情绪的奴隶,我们要做情绪的主人,人就需要调动我们的正念, 的","price":22}
    {"index":{}}
    {"id":"003","name":"中国人的修养","desc":"《中国人的修养》是蔡元培道德修养方面的代表作品,不仅继承了中华修身的传统,人还结合了西方的教育观念,是一部百年经典的道德实践之书。","price":33}
    {"index":{}}
    {"id":"004","name":"人性的弱点","desc":"你不一定读过这本书,但你一定听说过它,人甚至你肯定不止一次地看到别人引用过这本书里的话。的","price":44}
    {"index":{}}
    {"id":"005","name":"自卑与超越","desc":"现代社会人类必读个体心理学经典。","price":55}
    

    批量操作数据

    只举例了index(插入)的操作,还可以批量执行update、delete操作

    POST _bulk
    {"index":{"_index":"dangdang","_type":"books"}}
    {"id":"001","name":"少有人走的路","desc":"“佛说:万物皆空,空并不是没有,其核心是法无自性”,自律和爱是人生路上非常重要的课题,在某些方面自律,只能解决某些问题,全面的自律才能解决人生所有的问题。的","price":11}
    {"index":{"_index":"dangdang2","_type":"books2"}}
    {"id":"002","name":"正念的奇迹","desc":"什么是真正的自由,真正的自由不是为所欲为,一个人为所欲为是最不自由的。不要做情绪的奴隶,我们要做情绪的主人,人就需要调动我们的正念, 的","price":22}
    {"index":{"_index":"dangdang3","_type":"books3"}}
    {"id":"003","name":"中国人的修养","desc":"《中国人的修养》是蔡元培道德修养方面的代表作品,不仅继承了中华修身的传统,人还结合了西方的教育观念,是一部百年经典的道德实践之书。","price":33}
    {"index":{"_index":"dangdang","_type":"books"}}
    {"id":"004","name":"人性的弱点","desc":"你不一定读过这本书,但你一定听说过它,人甚至你肯定不止一次地看到别人引用过这本书里的话。的","price":44}
    {"index":{"_index":"dangdang","_type":"books"}}
    {"id":"005","name":"自卑与超越","desc":"现代社会人类必读个体心理学经典。","price":55}
    

    获取指定索引、指定类型的所有文档

    GET /dangdang/books/_search
    {
      "query": {
        "match_all": {}
      }
    }
    

    获取指定索引、指定类型的match文档,match会对搜索词作分词处理后再进行检索

    GET /dangdang/books/_search
    {
      "query": {
        "match": {
          "desc": "核心,自律"
        }
      }
    }
    

    删除指定查询条件的文档,不删除索引结构

    POST /dangdang/books/_delete_by_query
    {
      "query": {
        "match": {
          "desc": "人生"
        }
      }
    }
    

    删除指定索引结构及所有文档

    DELETE /dangdang
    

    获取所有的索引

    GET /_cat/indices
    

    获取指定内容的分词结果

    GET /_analyze
    {
      "text": ["嘻嘻哈哈"],
      "analyzer": "ik_max_word"
    }
    

    通过_id更新数据, 原始数据不保留直接删除, 然后重新插入更新后的值

    PUT /dangdang/books/Q-K0r4IBvMbAXC2VBLEs
    {
      "nameauto":"修改过后"
    }
    

    通过_id更新, 保留原始数据的更新

    POST /dangdang/books/2/_update
    {
      "doc":{
        "price": 77
      }
    }
    

    通过_id 脚本更新

    POST /dangdang/books/2/_update
    {
      "script": "ctx._source.price+=11"
    }
    

    通过指定_id删除文档

    DELETE /dangdang/books/Q-K0r4IBvMbAXC2VBLEs
    

    通过查询条件更新文档

    POST /dangdang/books/_update_by_query
    {
      "query":{
        "term":{
          "id":"002"
        }
      },
      "script":"ctx._source.price=11;ctx._source.desc+=\"增加描述\""
    }
    

    批量操作的create用法

    create文档时必须显式指定文档的_id, 否则会报错. 如果create的文档已存在, 则当前子操作会报错. 但是子操作报错并不前后操作中没有问题的操作

    POST /dangdang/books/_bulk
    {"create":{"_id":"11"}}
    {"name":"namecreate","desc":"_id 必须被显式指定"}
    {"create":{"_id":"11"}}
    {"name":"namecreate2"}
    {"create":{"_id":"22"}}
    {"name":"namecreate22"}
    

    terms匹配多个值

    POST dangdang/books/_delete_by_query
    {
      "query":{
        "terms":{
          "_id":["11","22"]
        }
      }
    }
    

    通过多个_id匹配多个文档

    POST dangdang/books/_delete_by_query
    {
      "query":{
        "ids":{
          "values":["11","22"]
        }
      }
    }
    

    模糊查询fuzzy

    **fuzzy查询不会对搜索的关键词分词, 直接按照精确匹配的模式去查找索引字典. 不过fuzzy允许搜索的关键词有一定的偏差, 具体如下: **

    • 搜索关键词长度为 2 不允许存在模糊 0
    • 搜索关键词长度为3-5 允许一次模糊 0 1
    • 搜索关键词长度大于5 允许最大2模糊

    如索引中的字典有"少有人走的路", 那么通过"少有人走的", "少有人走的路", "少有人走的路x", "少有人走的路xx"都是可以匹配到该文档的. 因为3-5个关键词允许有1个偏差, 5个以上关键词允许最多两个偏差

    GET /dangdang/books/_search
    {
      "query": {
        "fuzzy": {
          "name": "少有人走的路啊啊"
        }
      }
    }
    

    相关文章

      网友评论

          本文标题:ES常用API记录

          本文链接:https://www.haomeiwen.com/subject/latmgrtx.html