zoukankan      html  css  js  c++  java
  • Elasticsearch文档的CRUD

    基本Rest命令说明

    method url地址 description
    PUT 127.0.0.1:9200/索引名称/文档id 创建一个文档(指定文档id)
    POST 127.0.0.1:9200/索引名称 创建要给文档(随机文档id)
    POST 127.0.0.1:9200/索引名称/文档id/_update 修改一个文档
    DELETE 127.0.0.1:9200/索引名称/文档id/ 删除一个文档
    GET 127.0.0.1:9200/索引名称/文档id/ 通过文档id查询文档
    POST 127.0.0.1:9200/索引名称/_search 查询所有数据

    1、Create 一个文档

    使用 HTPP PUT 请求

    • 支持自动生成文档 Id 和指定文档 Id 两种方式
    • 通过调用 “post /users/_doc”,系统会自动生成 document Id
    • 使用 HTTP PUT users/_create/1 创建时,URI 中显示指定 _create,此时如果该 Id 的文档已经存在,操作失败。

    自己指定文档ID:PUT 索引名/_create/文档ID

    系统自动生成文档ID:POST 索引名/_doc ,系统会自动生成文档ID

    示例:

    //create document 指定ID
    PUT users/_doc/1
    {
    	"user":"Jack",
    	"post_data":"2020-02-09T18:01",
    	"message":"trying out Kibana"
    }
    //create document 自动生成ID
    POST users/_doc 
    {
    	"user":"Mike",
    	"post_data":"2020-02-09T18:07",
    	"message":"trying out Kibana"
    }
    

    创建一个索引,并且指定字段类型以及分片数量

    PUT twitter
    {
      "settings": {
        "number_of_shards": 2,
        "number_of_replicas": 1
      }, 
      "mappings": {
        "properties": {
          "name":{
            "type": "text"
          },
          "desc":{
            "type": "keyword"
          }
        }
      }
    }
    

    创建了名为 twitter 的索引库,分别指定name和description字段的类型。设置了2个shards,并且有一个replica。
    可以使用 GET twitter/_settings?pretty 命令查看索引信息。

    text和keyword的区别

    text 会被分词器解析。

    keyword 不会被分词器解析。

    2、Get 一个文档

    使用 HTTP GET 请求

    • 找到文档 ,返回 HTTP 200
      • 文档元信息
        • _index / _doc /
        • 版本信息,同一个 Id 的文档,即使被删除, Version 号也会不断增加(每次改动都会加1)
        • _source 中默认包含了文档的所有原始信息
    • 找不到文档,返回 HTTP 404

    根据文档id精确查询

    • GET person/_doc/1 : GET 索引名/_doc/文档ID

    查询全部文档信息

    • GET person/_doc/_search : GET 索引名称/_doc/_search

    根据文档字段值精确查询及模糊查询,可以根据默认的映射规则,产生基本的查询

    • GET person/_doc/_search?q=name:张三 :GET 索引名/_doc/_search?q=字段名:查询条件

    3、Index 文档

    使用 HTTP PUT 请求

    ​ Index 和 Create 不一样的地方:

    ​ 如果文档不存在,就索引新的文档。否则现有文档会被删除,新的文档会被索引。_version + 1。

    PUT 索引名/_doc/文档ID

    4、Update 文档

    使用 HTTP POST 请求

    • Update 方法不会删除原来的文档,而是实现真正的数据更新
    • Post 方法 / Payload 需要包含在 “ doc ” 中
    POST 索引名/_update/文档ID
    {
    	"doc":{   //在请求体中指定doc,再把相应文档提供在HTTP body中
    		"albums":["Album1","Album2"]
    	}
    }
    

    5、Delete 文档

    ​ 使用 HTTP DELETED 请求

    DELETE 索引名/_doc/文档ID

    Bulk API

    • 支持在一次 API 调用中,对不同的索引进行操作
    • 支持四种类型操作
      • Index
      • Create
      • Update
      • Delete
    • 可以在 URI 中指定 Index,也可以在请求的 Payload 中进行
    • 操作中 单条 操作失败,并不会影响其他操作
    • 返回结果中包括了每一条执行的结果

    POST _bulk

    示例:

    POST _bluk
    { "index" : {"_index" : "test", "_id" : "1"} }
    { "field1" : "value1" }
    { "delete" : {"_index" : "test", "_id" :"2"} }
    { "create" : {"_index" : "test2", "_id" :"3"} }
    { "field1" : "value3"}
    { "update" : {"_id" : "1", "_index" :"test"} }
    { "doc" : { "field2" : "value2" } }
    

    批量读取 — mget

    ​ 批量操作,可以减少网络连接中所产生的开销,提高性能。

    ​ 只需要提供一系列的文档ID,就可以查询出这些文档的信息。

    GET /_mget

    示例:

    GET _mget
    {
      "docs":[
          {
            "_index":"test",
            "_id":"1"
          },
          {
            "_index":"test",
            "_id":"2"
          }
        ]
    }
    

    批量查询 — msearch

    POST users/_msearch

    Elasticsearch 常见错误返回

    问题 原因
    无法连接 网络故障或集群挂了
    连接无法关闭 网络故障或节点出错
    429 集群过于繁忙
    4xx 请求体格式错误
    500 集群内部错误

  • 相关阅读:
    特殊集合
    推箱子
    集合
    数组

    循环语句 练习题
    穷举与迭代
    循环语句
    练习题
    switch case
  • 原文地址:https://www.cnblogs.com/leizzige/p/12288251.html
Copyright © 2011-2022 走看看