ElasticSearch常规操作
ES REST API 风格接口
https://www.elastic.co/guide/en/elasticsearch/reference/7.7/cat-indices.html
笔记参考
https://juejin.cn/post/7156423329765654558
查看健康状态
GET /_cat/health?v
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1681284001 07:20:01 docker-cluster green 1 1 4 4 0 0 0 0 - 100.0%
查看ES集群中的索引
GET /_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .apm-custom-link mEMoLqgkTbasghERbugo5g 1 0 0 0 208b 208b
green open .kibana_task_manager_1 dkEtqWUkQFe0TjIj4GeUJg 1 0 5 0 37.9kb 37.9kb
green open .apm-agent-configuration bjTtOoOfQZmvh9j5CHt9QA 1 0 0 0 208b 208b
green open .kibana_1 ZePVmaFiRDWrT2I70KB4Ag 1 0 87 3 145.9kb 145.9kb
yellow open test_index dqtYReLBSymyJwXy6cDDww 1 1 0 0 208b 208b
test_index yellow , 是因为只有一个节点, 主本和副本不能放同一个节点上
创建索引
PUT /test_index
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "test_index"
}
删除索引
DELETE /test_index
{
"acknowledged" : true
}
新增员工(文档)
PUT /company/_doc/1
{
"name": "Jack",
"age": 33,
"gender": "male",
"join_date": "2012-01-01"
}
# 返回
{
"_index" : "company",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
查询员工
可以指定ID的方式来进行文档查询。
GET /company/_doc/1
# 返回
{
"_index" : "company",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"name" : "Jack",
"age" : 33,
"gender" : "male",
"join_date" : "2012-01-01"
}
}
# 无数据返回
{
"_index" : "company",
"_type" : "_doc",
"_id" : "2",
"found" : false
}
修改员工(文档)
通过指定ID的方式进行修改
PUT /company/_doc/1
{
"name" : "Jack",
"age" : 24,
"gender" : "male",
"join_date": "2012-01-01"
}
# 返回
{
"_index" : "company",
"_type" : "_doc",
"_id" : "1",
"_version" : 2,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 1,
"_primary_term" : 1
}
删除员工(文档)
指定文档ID,删除文档
DELETE /company/_doc/1
{
"_index" : "company",
"_type" : "_doc",
"_id" : "1",
"_version" : 3,
"result" : "deleted",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 2,
"_primary_term" : 1
}
批量查询
使用 mget 命令进行多个id的批次查询
POST /company/_mget
{
"ids": [1, 2]
}
{
"docs" : [
{
"_index" : "company",
"_type" : "_doc",
"_id" : "1",
"_version" : 3,
"_seq_no" : 5,
"_primary_term" : 1,
"found" : true,
"_source" : {
"name" : "Jack",
"age" : 33,
"gender" : "male",
"join_date" : "2012-01-01"
}
},
{
"_index" : "company",
"_type" : "_doc",
"_id" : "2",
"_version" : 1,
"_seq_no" : 6,
"_primary_term" : 1,
"found" : true,
"_source" : {
"name" : "Jack",
"age" : 3322,
"gender" : "male",
"join_date" : "2012-01-01"
}
}
]
}
批量操作
除了批量查询之外,也可以进行批量的其他操作。这里需要使用 _bulk 命令
** 命令模板如下:**
POST /index/_bulk
{ action: { metadata }}\n
{ request body }\n
{ action: { metadata }}\n
{ request body }\n
** bulk的请求模板分成action、metadata和request body三部分。action必须是以下4种选项之一 **
index : 如果文档不存在就创建,如果文档存在就更新
create : 如果文档不存在就创建,但如果文档存在就返回错误
update : 更新一个文档,如果文档不存在就返回错误,使用时要给_id值
delete : 删除一个文档,如果要删除的文档id不存在,就返回错误
例如:批量添加数据
POST /company/_bulk
{"create":{"_index":"company","_id": 0}}
{"name":"Bob","age": 19,"hobby": "rap"}
{"create":{"_index":"company","_id": 1}}
{"name":"Tom","age": 20,"hobby": "football basketball sing"}
{"create":{"_index":"company","_id": 2}}
{"name":"Jack","age":30,"hobby": "basketball tennis sing"}
{"create":{"_index":"company","_id": 3}}
{"name":"Amy","age": 25,"hobby": "dance sing rap"}
# 返回,由于使用 create 方式, ID (1,2) 已经存在,所以报错
{
"took" : 57,
"errors" : true,
"items" : [
{
"create" : {
"_index" : "company",
"_type" : "_doc",
"_id" : "0",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 7,
"_primary_term" : 1,
"status" : 201
}
},
{
"create" : {
"_index" : "company",
"_type" : "_doc",
"_id" : "1",
"status" : 409,
"error" : {
"type" : "version_conflict_engine_exception",
"reason" : "[1]: version conflict, document already exists (current version [3])",
"index_uuid" : "nm_lNVG8RK22tTL2_CRgJg",
"shard" : "0",
"index" : "company"
}
}
},
{
"create" : {
"_index" : "company",
"_type" : "_doc",
"_id" : "2",
"status" : 409,
"error" : {
"type" : "version_conflict_engine_exception",
"reason" : "[2]: version conflict, document already exists (current version [1])",
"index_uuid" : "nm_lNVG8RK22tTL2_CRgJg",
"shard" : "0",
"index" : "company"
}
}
},
{
"create" : {
"_index" : "company",
"_type" : "_doc",
"_id" : "3",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 8,
"_primary_term" : 1,
"status" : 201
}
}
]
}
Last updated