免責聲明:此答案已更新。
要實現部分更新,您可以定義script)。
從理論上講,您可以將所需的任何轉換應用於要重新編制索引的文檔。
(原來的答案結束)
實現自定義重新索引與合併
正如指出的問題的作者,如果需要合併兩個沒有幫助文件,已經存在於結果索引中的文件和新文件。
Elasticsearch _reindex
方法被引入version 2.3並被認爲是實驗;它看起來好像只是一個scroll查詢與bulk insert API的組合。我做出這個結論基於這樣this page權威指南中的建議,以重新編制這樣你的數據的事實:
重新索引所有的文件從舊索引效率,使用滾動從舊檢索文檔批索引和批量API將它們推送到新索引中。
現在,爲了解決部分更新的需要。重新索引 - 合併的方法可以粗略地分爲四個階段:
- 從索引乙從索引讀取文件A
- 讀取文檔
- 合併文件
- 插入新的文檔轉換成乙
階段1和4實際上是reindex
調用的原始場景;現在需要與其他索引合併併合並文檔。
我建議編寫一個自定義腳本,並使用scroll
以流式方式讀取索引A,批量API用於從索引B檢索文檔,用於合併文檔的自定義代碼和用於插入文檔的批量API。這種腳本的性能至少可以與原始的reindex
實現相媲美。 (同時請確保您使用index performance tuning tips查看此頁面,特別是增加/禁用index.refresh_interval
。)
當然還有其他選項,與ElasticSearch無關,並且此問題的作者可能已經考慮了哪些選項像轉儲這兩個索引,將它們與自定義代碼結合起來並插入新索引)。
希望這會有所幫助。
是的,但除非我弄錯了,這種轉換將應用於來自源索引的數據,而不適用於目標文檔本身 – SebScoFr
@SebScoFr是的,您是對的。我將刪除我的答案,因爲它不相關。 –