2016-09-28 114 views
0

我們有用於每日更新數據的用例。文檔更改的一些屬性和一些新記錄在那裏。是否有可能重新索引具有更新值的數據,這些數據已經存在,並添加新的重定位。 如果是,請解釋如何。更新文檔並在彈性搜索中添加新字段

它是否具有更新API?

我索引這樣

String json = getJsonMapper().writeValueAsString(data); 
    bulkRequestBuilder.add(getClient().prepareIndex(indexName, typeName).setSource(json)); 

我不傳遞任何標識。我如何更新這個。什麼是最佳方式

回答

0

Elasticsearch使用Apache Lucene在蓋下。在Lucene文件中是immutable

您可以使用Update API作爲您的用例。此API會執行刪除操作並保存在底下,但這不關你。您甚至可以更新文檔的一部分,這意味着Elasticsearch將檢索舊文檔,生成新文檔,刪除舊文檔並保存新文檔。

問題是,所有這些工作是你需要使用相同的ID。如果你沒有,那麼Elasticsearchgenerate一個給你,如果你使用索引API。這意味着它將被保存爲一個新文檔。 更新API需要該ID,否則它不知道要更新什麼。