索引
索引创建
- 命令
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
}