2016-12-16 114 views
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 
     } 
    } ] 
    } 
} 

我不完全弄清楚什麼是錯的。有任何想法嗎?

回答

1

ElasticSearch不會更新空的對象。你可以嘗試:
"metainfos":null
"metainfos":"ceeaceaaaceeaceaaaceeaceaaaceeaaceaaaceeabceaaa":[]

清理現場。

+0

讓我多鑽一些你的答案。不過,第一次創建一個文檔時,這個屬性metainfos是一個空數組而不是空值(metainfos:[])'。可能嗎? (我現在無法測試它...) – Jordi

+0

這取決於您的映射,但是是空陣列也可以。 – Hosar

+0

謝謝@Hosar。你已經寫下了''它取決於你的映射''。你能詳細介紹一下你的意思嗎? – Jordi