elasticsearch系列笔记(三) 基本API

添加文档,自定义ID

1
2
3
4
PUT /{index}/{type}/{id}
{
"field": "value",
}

添加文档,这时候的ID是ES自动生成,为22位的UUIDS

1
2
3
4
POST /{index}/{type}/
{
"field": "value",
}

获得文档

1
2
3
4
5
6
7
8
9
10
11
GET /{index}/{type}/{id}?pretty
{
"_index" : "{index}",
"_type" : "{type}",
"_id" : "{id}",
"_version" : 1,
"found" : true, //是否找到,404同步返回
"_source" : {
"field": "value",
}
}

获得文档的特定属性

1
2
3
4
5
GET /{index}/{type}/{id}/{key}?pretty
{
"{key}": "value"
}
key 为上面json的值

获得文档的特定值

1
2
3
4
5
6
7
8
9
10
11
12
GET /{index}/{type}/{id}?pretty&_source={field1},{field2}
{
"_index" : "{index}",
"_type" : "{type}",
"_id" : "{id}",
"_version" : 1,
"found" : true, //是否找到,404同步返回
"_source" : {
"field1": "value",
"field2": "value",
}
}

检查文档是否存在

1
HEAD /{index}/{type}/{id}

更新文档的时候,写法和插入时相同

1
_version会递增

创建文档,成功创建的时候,返回201,失败返回409

1
2
PUT /{index}/{type}/{id}?op_type=create
PUT /{index}/{type}/{id}/_create

删除文档,失败返回404

1
DELETE /{index}/{type}/{id}

更新某个特定版本的文档,用于控制并发错误,version_type设置了用此时的version来设置文档的version

1
2
PUT /{index}/{type}/{id}?version={version}
PUT /{index}/{type}/{id}?version={version}&version_type=external

更新文档的部分内容,合并文档

1
POST /{index}/{type}/{id}/_update

脚本是一些奇怪的逻辑,不过蛮好玩的。

检索多个文档

1
2
3
4
5
6
7
8
POST /_mget
{
"docs": [
{
*******
}
]
}

批量操作,以换行符来判断,防止不必要的json解析等数据拷贝。

1
2
3
4
5
POST /_bulk
{ action: {metadata }} \n
{ request body } \n
{ action: {metadata }} \n
{ request body } \n