2017-01-24 81 views
1

我有一個數據源,它將創建大量我打算存儲在ElasticSearch中的條目。 源創建在ElasticSearch兩個條目爲同一個文件:在使用滾動API時更新ElasticSearch(ES)中的現有文檔

  • 它記錄初始化時間和其他細節ES
  • 「完成」部分包含主要的隨機項下的「初始化」部分數據,並使用init的隨機密鑰更新ES中最初創建的文檔(合併)。

我將需要使用基於時間的指標在ElasticSearch,與使用rollover index的別名,指向實際指標, 。 對於更新,我將使用update API來合併init和finish。

問題:如果帶有隨機密鑰的初始文檔不在當前索引中(但在較舊的文檔中已經翻轉過),那麼使用它的密鑰 成功執行更新?如果不是,執行更新的最佳做法是什麼?

回答

0

經過一番安靜後,我開始測試它。

簡答:索引在別名下翻轉後,使用別名的更新操作僅引用新索引,因此它將在新索引中創建文檔,從而生成兩個單獨的文檔。

解決它的一種方法是在最後2個(或更多如果需要)索引中執行搜索,並找出哪個非別名索引名稱用於更新。

我更喜歡的其他解決方案是避免使用翻轉,但是從我們文檔的必需日期字段計算索引名稱,並使用模板定義映射來創建應用程序的新索引。通過這種方式,事件源和按順序重播文檔將產生相同的索引。

相關問題