2015-06-11 100 views
0

我在ElasticSearch中有一個包含字典的文檔。最初它是空的,但稍後我使用_update API更新它,並插入幾個鍵/值對。現在我需要再次清空字典。我嘗試使用_update API並將空字典傳遞給它({}),但舊的鍵/值對仍然存在。我無法使用ctx腳本。一種解決方案是傳遞null,然後重新插入更新的字典,但這會導致兩個ES調用。 _update API聲明它合併字典,但沒有選項將其清空。在彈性搜索中更新字典

回答

0

因此,要回顧一下,你在你的Elasticsearch索引的文檔這樣

curl -XPOST localhost:9200/your_index/your_type/123 -d '{"field1":"value1"}' 

然後你使用_update端點插入一對夫婦更多的領域:

curl -XPOST localhost:9200/your_index/your_type/123/_update -d '{ 
    "doc": {"field2": "value2"} 
}' 

現在您的文檔123容貌像這樣,你想清空它來包含新的數據。

{ 
    "field1": "value1", 
    "field2": "value2" 
} 

你可以簡單地重新索引與新的領域,但相同ID的新文檔,就像我們上面的第一條命令做了:

curl -XPOST localhost:9200/your_index/your_type/123 -d '{"field3":"value3"}' 

而且文件123現在看起來像

{ 
    "field3": "value3" 
} 

但是,如果你需要先清空文件,並在稍後的時間點更新,您可以直接刪除它

curl -XDELETE localhost:9200/your_index/your_type/123 

由於文檔將會丟失,您的應用程序可能會認爲它是空的(語義上講)。

+0

對於遲到的評論,我需要刪除文檔中的字典。 {field1「:」value1「, 」dictionary「:{」field2「,」value2「} }。我需要設置「字典」爲空。 – Sky

+0

你可以用'curl -XPOST localhost:9200/your_index/your_type/123/_update -d'{ 「doc」:{「dictionary」:null} }將'dictionary'字段設置爲null''' – Val