Elasticsearch學習筆記3: bulk批量處理

elasticsearch提供批量處理的api: bulkweb

bulk API 容許在單個步驟中進行屢次 create 、 index 、 update 或 delete 請求json

bulk的請求體:api

{ action: { metadata }}\n
{ request body        }\n
{ action: { metadata }}\n
{ request body        }\n
...

請求體爲多個單行json數據用\n連接起來elasticsearch

action/metadata行,指定操做類型和參數post

action/metadata 行指定 哪個文檔 作 什麼操做 。 action/metadata 行指定 哪個文檔 作 什麼操做 。url

action 必須是如下選項之一:code

create 

若是文檔不存在,那麼就建立它。

index

建立一個新文檔或者替換一個現有的文檔。

update

部分更新一個文檔。

delete

刪除一個文檔。

metadata 應該 指定被索引、建立、更新或者刪除的文檔的 _index 、 _type 和 _idblog

例如,一個 delete 請求看起來是這樣的:索引

{ "delete": { "_index": "website", "_type": "blog", "_id": "123" }}

一個create請求:文檔

{ "create":  { "_index": "website", "_type": "blog", "_id": "123" }}
{ "title":    "My first blog post" }

create請求必須跟上一行,內容爲建立的文檔參數

若是不指定 _id ,將會自動生成一個 ID :

一個index請求:

{ "index": { "_index": "website", "_type": "blog" }}
{ "title":    "My second blog post" }

把全部的操做組合在一塊兒,一個完整的 bulk 請求 有如下形式:

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"} }

bulk請求返回的結構類型以下:

{
       "took": 4,
       "errors": false, 
       "items": [
          {  "delete": {
                "_index":   "website",
                "_type":    "blog",
                "_id":      "123",
                "_version": 2,
                "status":   200,
                "found":    true
          }},
          {  "create": {
                "_index":   "website",
                "_type":    "blog",
                "_id":      "123",
                "_version": 3,
                "status":   201
          }},
          {  "create": {
                "_index":   "website",
                "_type":    "blog",
                "_id":      "EiwfApScQiiy7TIKFxRCTw",
                "_version": 1,
                "status":   201
          }},
          {  "update": {
                "_index":   "website",
                "_type":    "blog",
                "_id":      "123",
                "_version": 4,
                "status":   200
          }}
       ]
    }

items爲一個列表,依次是請求操做的返回結果

另外能夠將metadata中的索引,類型,文檔id均可以放在url中 metadata中若是有會覆蓋url中指定的索引類型和id

相關文章
相關標籤/搜索