0
我在ElasticSearch中有一個包含字典的文檔。最初它是空的,但稍後我使用_update API更新它,並插入幾個鍵/值對。現在我需要再次清空字典。我嘗試使用_update API並將空字典傳遞給它({}),但舊的鍵/值對仍然存在。我無法使用ctx腳本。一種解決方案是傳遞null,然後重新插入更新的字典,但這會導致兩個ES調用。 _update API聲明它合併字典,但沒有選項將其清空。在彈性搜索中更新字典
我在ElasticSearch中有一個包含字典的文檔。最初它是空的,但稍後我使用_update API更新它,並插入幾個鍵/值對。現在我需要再次清空字典。我嘗試使用_update API並將空字典傳遞給它({}),但舊的鍵/值對仍然存在。我無法使用ctx腳本。一種解決方案是傳遞null,然後重新插入更新的字典,但這會導致兩個ES調用。 _update API聲明它合併字典,但沒有選項將其清空。在彈性搜索中更新字典
因此,要回顧一下,你在你的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
由於文檔將會丟失,您的應用程序可能會認爲它是空的(語義上講)。
對於遲到的評論,我需要刪除文檔中的字典。 {field1「:」value1「, 」dictionary「:{」field2「,」value2「} }。我需要設置「字典」爲空。 – Sky
你可以用'curl -XPOST localhost:9200/your_index/your_type/123/_update -d'{ 「doc」:{「dictionary」:null} }將'dictionary'字段設置爲null''' – Val