Elasticsearch 索引和文档 CRUD

索引

索引创建

  • 命令
PUT {index}
  • 例子

请求

PUT books

响应

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "books"
}

重复创建会响应错误信息

{
  "error": {
    "root_cause": [
      {
        "type": "resource_already_exists_exception",
        "reason": "index [books/BgFlHzR1R8SzKD9b54wbXg] already exists",
        "index_uuid": "BgFlHzR1R8SzKD9b54wbXg",
        "index": "books"
      }
    ],
    "type": "resource_already_exists_exception",
    "reason": "index [books/BgFlHzR1R8SzKD9b54wbXg] already exists",
    "index_uuid": "BgFlHzR1R8SzKD9b54wbXg",
    "index": "books"
  },
  "status": 400
}

全部索引查询

  • 命令
    • 显示列名:GET _cat/indices?v
    • 不显示列名:GET _cat/indices
  • 例子
health status index                        uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .kibana_task_manager         MNJJ93kjRUqH5LzNXHEVpw   1   1          2            0     29.9kb         13.5kb
green  open   kibana_sample_data_ecommerce 8qrT1FwMQuih9hFjg56nhQ   1   1       4675            0      9.6mb          4.8mb
green  open   .kibana_1                    HepZtnsaRY6uLlc2N_vMdw   1   1         50            0      1.8mb        923.6kb
green  open   books                        BgFlHzR1R8SzKD9b54wbXg   1   1          3            4     22.7kb         13.8kb

指定索引查询

  • 命令
GET {index}
  • 例子

请求

GET books

响应

{
  "books" : {
    "aliases" : { },
    "mappings" : { },
    "settings" : {
      "index" : {
        "creation_date" : "1658933541352",
        "number_of_shards" : "1",
        "number_of_replicas" : "1",
        "uuid" : "gRc3ipCNTPy7miaB5Keq2Q",
        "version" : {
          "created" : "7020099"
        },
        "provided_name" : "books"
      }
    }
  }
}

索引删除 - 索引下的文档会被一起删除

  • 命令
DELETE {index}
  • 例子

请求

DELETE books

响应

{
  "acknowledged" : true
}

文档

文档创建 - 使用 ES 生成的 ID

  • 命令
POST {index}/_doc
{
  ...
}
  • 例子

请求

POST books/_doc
{
  "name": "高性能MySQL",
  "price": 50
}

响应

{
  "_index" : "books",
  "_type" : "_doc",
  "_id" : "K2Q6QIIBFSLlWGmOrl4t",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

重复创建会生成新的ID,_version 重新从 1 开始

{
  "_index" : "books",
  "_type" : "_doc",
  "_id" : "LGQ7QIIBFSLlWGmO-l7k",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "failed" : 0
  },
  "_seq_no" : 1,
  "_primary_term" : 1
}

文档创建 - 使用输入的 ID

  • 命令
# 方式一:如果文档不存在,就创建新的文档,存在的话现有的文档会被删除,新的文档被创建,同时版本信息 +1。
PUT {index}/_doc/{doc_id}
{
  ...
}

# 方式二:如果文档不存在,就创建新的文档,文档已存在则创建失败
PUT {index}/_create/{doc_id}
{
  ...
}
  • 例子

例 1:

请求

PUT books/_doc/3
{
  "name": "深入理解Java虚拟机",
  "price": 79
}

响应

{
  "_index" : "books",
  "_type" : "_doc",
  "_id" : "3",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "failed" : 0
  },
  "_seq_no" : 11,
  "_primary_term" : 1
}

重复创建,version + 1

{
  "_index" : "books",
  "_type" : "_doc",
  "_id" : "3",
  "_version" : 2,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "failed" : 0
  },
  "_seq_no" : 12,
  "_primary_term" : 1
}

例2:

请求

POST books/_create/4
{
  "name": "Spring Boot 实战",
  "price": 79
}

响应

{
  "_index" : "books",
  "_type" : "_doc",
  "_id" : "4",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "failed" : 0
  },
  "_seq_no" : 15,
  "_primary_term" : 1
}

重复创建响应错误

{
  "error": {
    "root_cause": [
      {
        "type": "version_conflict_engine_exception",
        "reason": "[4]: version conflict, document already exists (current version [1])",
        "index_uuid": "BgFlHzR1R8SzKD9b54wbXg",
        "shard": "0",
        "index": "books"
      }
    ],
    "type": "version_conflict_engine_exception",
    "reason": "[4]: version conflict, document already exists (current version [1])",
    "index_uuid": "BgFlHzR1R8SzKD9b54wbXg",
    "shard": "0",
    "index": "books"
  },
  "status": 409
}

文档更新

  • 命令
# 文档必须存在,更新只会对相应字段做增量修改,请求报文payload 需要包含在 "doc" 中
POST {index}/_update/{doc_id}
{
  "doc":{
    ...
  }
}
  • 例子

请求

POST books/_update/4
{
  "doc":{
    "price": 100
  }
}

响应

{
  "_index" : "books",
  "_type" : "_doc",
  "_id" : "4",
  "_version" : 2,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "failed" : 0
  },
  "_seq_no" : 16,
  "_primary_term" : 1
}

文档查询

  • 命令
    • 通过 ID 查询:GET {index}/_doc/{doc_id}
    • 查询索引下所有文档:GET {index}/_search
  • 例子

例 1:

请求

GET books/_doc/1

响应

{
  "_index" : "books",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 7,
  "_seq_no" : 8,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "name" : "深入理解Java虚拟机",
    "price" : 79
  }
}

例 2:

请求

GET books/_search

响应

{
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "books",
        "_type" : "_doc",
        "_id" : "K2Q6QIIBFSLlWGmOrl4t",
        "_score" : 1.0,
        "_source" : {
          "name" : "高性能MySQL",
          "price" : 50
        }
      },
      {
        "_index" : "books",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "name" : "深入理解Java虚拟机",
          "price" : 79
        }
      }
    ]
  }
}

文档删除

  • 命令
DELETE {index}/_doc/{doc_id}
  • 例子

请求

DELETE books/_doc/1

响应

{
  "_index" : "books",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 8,
  "result" : "deleted",
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "failed" : 0
  },
  "_seq_no" : 22,
  "_primary_term" : 1
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值