2016-12-29 37 views
1

我試圖在彈性搜索中執行批量操作。然而,在JSON中給出的上一次操作永遠不會被彈性搜索執行。彈性搜索批量忽略在json中提供的最後一個操作

這是我請求

curl -XPOST 'localhost:9200/customer/external/_bulk?pretty&pretty' -d' 

{"update":{"_id":"1"}} 
{"doc": { "name": "Update - John Doe becomes Jane Doe" } } 

{"delete":{"_id":"4"}} 

{"index":{"_id":"3"}} 
{"name": "Create or Update - New Jane Doe" } 

{"create":{"_id":"4"}} 
{"name": "Only Create - New Jane Doe" } 

{"create":{"_id":"5"}} 
{"name": "Only Create - New Jane Doe 1" }' 

響應只包含4個輸出,而不是5:

{ 
    "took": 100, 
    "errors": false, 
    "items": [ 
    { 
     "update": { 
     "_index": "customer", 
     "_type": "external", 
     "_id": "1", 
     "_version": 9, 
     "result": "noop", 
     "_shards": { 
      "total": 2, 
      "successful": 1, 
      "failed": 0 
     }, 
     "status": 200 
     } 
    }, 
    { 
     "delete": { 
     "found": true, 
     "_index": "customer", 
     "_type": "external", 
     "_id": "4", 
     "_version": 4, 
     "result": "deleted", 
     "_shards": { 
      "total": 2, 
      "successful": 1, 
      "failed": 0 
     }, 
     "status": 200 
     } 
    }, 
    { 
     "index": { 
     "_index": "customer", 
     "_type": "external", 
     "_id": "3", 
     "_version": 7, 
     "result": "updated", 
     "_shards": { 
      "total": 2, 
      "successful": 1, 
      "failed": 0 
     }, 
     "created": false, 
     "status": 200 
     } 
    }, 
    { 
     "create": { 
     "_index": "customer", 
     "_type": "external", 
     "_id": "4", 
     "_version": 5, 
     "result": "created", 
     "_shards": { 
      "total": 2, 
      "successful": 1, 
      "failed": 0 
     }, 
     "created": true, 
     "status": 201 
     } 
    } 
    ] 
} 

我的方案,客戶ID爲 「5」(名稱:「Only Create - New Jane Doe 1」)從未創建過。如果我刪除了最後一個請求(id:5),那麼即使id:4也沒有被創建。

我做了一個搜索以獲取客戶索引的所有文檔,但id:5不存在。

它就好像彈性搜索忽略了JSON的最後部分。我甚至試圖通過PostmanClient發佈請求,並且它仍然是一樣的。

彈性搜索版本:5.1.1

+0

我不確定,試試curl -XPOST'localhost:9200/customer/external/_bulk?pretty = true'-d – Lax

回答

1

貌似JSON必須以一個新行字符(\ n)的結束,因爲描述here

我在JSON的末尾添加了一個新行,它工作正常。