1. ElasticSearch数据管理
ElasticSearch是面向文档的,所以操作ElasticSearch其实就是操作索引里面的文档,具体有索引、搜索、排序、过滤等。文档格式为json。
1.1. 索引的基本操作
1.1.1 创建索引
PUT /idx_db
1.1.2 查询索引
GET /idx_db
1.1.3 删除索引
DELETE /idx_db
1.2 文档的基本操作
1.2.1 添加文档
格式: PUT /索引名称/类型/id
PUT /es_db/_doc/1
{
"name": "张三",
"sex": 1,
"age": 25,
"address": "广州天河公园",
"remark": "java developer"
}
PUT /es_db/_doc/2
{
"name": "李四",
"sex": 1,
"age": 28,
"address": "广州荔湾大厦",
"remark": "java assistant"
}
1.2.2 修改文档(和增加文档操作一样,存在对应的id就修改,不存在就添加)
格式: PUT /索引名称/类型/id
PUT /es_db/_doc/1
{
"name": "白起老师",
"sex": 1,
"age": 25,
"address": "张家界森林公园",
"remark": "php developer assistant"
}
1.2.3 查询文档
格式: GET /索引名称/类型/id
举例: GET /es_db/_doc/1
1.2.4 删除文档
格式: DELETE /索引名称/类型/id
举例: DELETE /es_db/_doc/1
注意:POST和PUT都能起到创建/更新的作用
1、PUT 需要指定文档id 才能进行更新和创建操作,POST 如果没指定就是新增文档,文档id自动生成,如果有文档id就更新;
2、PUT与DELETE都是幂等性操作, 即不论操作多少次, 结果都一样,POST不是。
1.2.5 批量查询文档
有两种方式,直接上代码
GET /product_db/_mget
{
"docs": [
{
"_id": 1
},
{
"_id": 2
}
]
}
GET _mget
{
"docs": [
{
"_index": "product_db",
"_id": 1
},
{
"_index": "product_db",
"_id": 2
}
]
}
1.2.6 批量写文档(通过_bulk的API来实现)
请求方式:POST
请求地址:_bulk
请求参数:通过_bulk操作文档,一般至少有两行参数(或偶数行参数)
第一行参数为指定操作的类型及操作的对象(index,type和id)
第二行参数才是操作的数据
参数类似于:
{"actionName":{"_index":"indexName", "_type":"typeName","_id":"id"}}
{"field1":"value1", "field2":"value2"}
- actionName:表示操作类型,主要有create,index,delete和update
1)批量创建或全量替换文档,当对应的 index 和 _id 存在时则为替换,不存在时为创建
POST _bulk
{"create":{"_index":"article","_id":3}}
{"id":3,"title":"老师1","content":"老师666","tags":["java","面向对象"],"create_time":1554015482530}
{"create":{"_index":"article","_id":4}}
{"id":4,"title":"老师2","content":"老师NB","tags":["java","面向对象"],"create_time":1554015482530}
2)批量修改update
POST _bulk
{"update":{"_index":"article","_id":3}}
{"doc":{"title":"ES大法必修内功"}}
{"update":{"_index":"article","_id":4}}
{"doc":{"create_time":1554018421008}}
3)批量删除delete
POST _bulk
{"delete":{"_index":"article","_id":3}}
{"delete":{"_index":"article","_id":4}}