ES常用API记录

2022-08-25  本文已影响0人  Nzkalhbxx

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允许搜索的关键词有一定的偏差, 具体如下: **

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

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

猜你喜欢

热点阅读