Elasticsearch 批量增删改查

2015-08-21 23:43:44   最后更新: 2015-11-02 18:09:23   访问数量:1490




Elasticsearch 允许通过一次查询请求执行多个文档的检索,这样可以避免多次请求造成的单独网络开销,相对于一个一个的检索,这样的效率更高

 

mget API 简介

mget API 参数是一个 docs 数组,每个节点顶一个一个文档的 _index、_type、_id、_source

 

GET /_mget { "docs" : [ { "_index" : "website", "_type" : "blog", "_id" : 2 }, { "_index" : "website", "_type" : "page", "_id" : 1, "_source" : "views" } ] }

 

 

返回包体

返回的响应包体也包含一个 docs 数组,每个文档还包含一个响应,按照请求顺序排列:

{ "docs" : [ { "_index" : "website", "_id" : "2", "_type" : "blog", "found" : true, "_source" : { "text" : "This is a piece of cake...", "title" : "My first external blog entry" }, "_version" : 10 }, { "_index" : "website", "_id" : "1", "_type" : "pageviews", "found" : true, "_version" : 2, "_source" : { "views" : 2 } } ] }

 

 

相同 _index 与 _type 的批量检索

如果想在一个 _index 和 _type 下执行多次查询,也可以像这样在 URL 中指定 _index 和 _type

GET /website/blog/_mget { "docs" : [ { "_id" : 2 }, { "_type" : "pageviews", "_id" : 1 } ] }

 

或者更进一步:

GET /website/blog/_mget { "ids" : [ "2", "1" ] }

 

 

如果查询结果不存在,则会在返回的响应体中将 found 设置为 false,同时,_source 将不会出现

 

bulk API 简介

与 mget API 类似,bulk API 允许我们使用单一请求实现多个文档的创建、索引、更新或删除

 

bulk API 的请求如下:

POST /_bulk { "delete": { "_index": "website", "_type": "blog", "_id": "123" }} { "create": { "_index": "website", "_type": "blog", "_id": "123" }} { "title": "My first blog post" } { "index": { "_index": "website", "_type": "blog" }} { "title": "My second blog post" } { "update": { "_index": "website", "_type": "blog", "_id": "123", "_retry_on_conflict" : 3} } { "doc" : {"title" : "My updated blog post"} }

 

每行行尾的换行符(\n)都是必须的,包括最后一行

 

每个子请求独立执行,任何一个执行错误都不会影响到其他请求

 

相同 _index 与 _type 的批量操作

与 mget API 一样,bulk 请求也可以在 URL 中使用 _index 和 _type 实现批量请求

POST /website/_bulk { "index": { "_type": "log" }} { "event": "User logged in" }

 

POST /website/log/_bulk { "index": {}} { "event": "User logged in" } { "index": { "_type": "blog" }} { "title": "Overriding the default type" }

 

 






技术帖      技术分享      存储      api      http      elasticsearch      文档      document      mget      接口      json      bulk      doc      docs     


京ICP备15018585号