0
我正面臨與文檔更新有關的麻煩。elasticsearch不更新文檔
我能夠索引(創建)文檔,並且它們正確地添加到索引上。
儘管如此,當我試圖更新其中的一個時,操作沒有進行,文檔沒有更新。
當我第一次添加它就像文件:
{
"user" : "user4",
"timestamp" : "2016-12-16T15:00:22.645Z",
"startTimestamp" : "2016-12-16T15:00:22.645Z",
"dueTimestamp" : null,
"closingTimestamp" : null,
"matter" : "F1",
"comment" : null,
"status" : 0,
"backlogStatus" : 20,
"metainfos" : {
"ceeaceaaaceeaceaaaceeaceaaaceeaaceaaaceeabceaaa" : [ "FZ11" ]
},
"resources" : [ ],
"notes" : null
}
這是我使用,以建立UpdateRequest代碼:
this.elasticsearchResources.getElasticsearchClient()
.prepareUpdate()
.setIndex(this.user.getMe().getUser())
.setType(type)
.setId(id.toString())
.setDoc(source)
.setUpsert(source)
.setDetectNoop(true);
我也能調試這是這個請求的內容開始發送給elasticsearch。該文件是:
{
"user":"user4",
"timestamp":"2016-12-16T15:00:22.645Z",
"startTimestamp":"2016-12-16T15:00:22.645Z",
"dueTimestamp":null,
"closingTimestamp":null,
"matter":"F1",
"comment":null,
"status":0,
"backlogStatus":20,
"metainfos":{
},
"resources":[
],
"notes":null
}
正如你所看到的唯一區別是metainfos
是空的,當我嘗試更新文檔。
執行此update request
之後,文檔未更新。我的意思是metainfos
內容保持像以前一樣:
#curl -XGET 'http://localhost:9200/user4/fuas/_search?pretty'
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 1.0,
"hits" : [ {
"_index" : "living_v1",
"_type" : "fuas",
"_id" : "327c9435-c394-11e6-aa90-02420a011808",
"_score" : 1.0,
"_routing" : "user4",
"_source" : {
"user" : "user4",
"timestamp" : "2016-12-16T15:00:22.645Z",
"startTimestamp" : "2016-12-16T15:00:22.645Z",
"dueTimestamp" : null,
"closingTimestamp" : null,
"matter" : "F1",
"comment" : null,
"status" : 0,
"backlogStatus" : 20,
"metainfos" : {
>>>>>>>> "ceeaceaaaceeaceaaaceeaceaaaceeaaceaaaceeabceaaa" : [ "FZ11" ]
},
"resources" : [ ],
"notes" : null
}
} ]
}
}
我不完全弄清楚什麼是錯的。有任何想法嗎?
讓我多鑽一些你的答案。不過,第一次創建一個文檔時,這個屬性metainfos是一個空數組而不是空值(metainfos:[])'。可能嗎? (我現在無法測試它...) – Jordi
這取決於您的映射,但是是空陣列也可以。 – Hosar
謝謝@Hosar。你已經寫下了''它取決於你的映射''。你能詳細介紹一下你的意思嗎? – Jordi