2013-10-24 64 views
10

是否可以更新elasticsearch中的某些特定字段值而不覆蓋其他字段。 ?只更新elasticsearch中的特定字段值

+0

我可以知道我的回答是否有幫助? – javanna

+0

是的感謝您的幫助。我已經使用腳本格式,並遵循[更新api](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-update.html) –

+0

偉大的,你可能會想要接受答案,然後... – javanna

回答

-1

,你可以做到以下幾點:

  • 獲取文檔
  • 更新你的領域
  • 寫文檔後面

它是Solr的

相同的,如果你只是寫一個新的文件(帶有一個現有的ID),只填寫你想要更新的一個字段,誰le文檔(所有其他字段)將被覆蓋

+0

檢查彈性搜索[更新api](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-update.html),它不要求自己提交整個文檔,但允許提交部分文檔或腳本。 – javanna

12

是的,Elasticsearch支持部分更新。這意味着,你可以提交:

  • 的部分文件,將與現有的
  • 合併,將在現有文檔

的頂部被執行的腳本看一看update api。 在這兩種情況下,由於底層lucene庫的工作原理,在底層會發生什麼情況,即要檢索要更新的文檔,將更改應用於該文檔,並使用新文檔覆蓋舊文檔。在這一天結束時,它實際上是對文檔的完全重寫,但是您不必提交整個文檔,除非您禁用默認啓用的_source field,這是允許您檢索整個文檔的字段文件以便對其應用更改。

+0

作爲一個繼續,你可以看看這個問題http://stackoverflow.com/questions/28937946/elasticsearch-particial-update-of-not-indexed-field – 2015-03-09 08:43:01

4

至於這個答案一個codebased貢獻,下面的查詢可以使用:

POST /index/type/100100471/_update 
{ 
    "doc" : { 
     "yourProperty" : 10000 
    } 
} 

該查詢更新yourProperty屬性僅

其結果是,出現這種反應:

{ 
    "_index": "index", 
    "_type": "type", 
    "_id": "100100471", 
    "_version": 1, 
    "_shards": { 
     "total": 0, 
     "successful": 1, 
     "failed": 0 
    } 
}