[英]Elasticsearch Reindexing while updating documents?
如果我更改了索引的映射並想要重新索引,該怎么辦?
我目前正在使用尚未具有reindex功能的Java API,因此使用bulk可以解決我的問題。 所以解決方案看起來像這樣
ref 如何通過Java API重新索引ElasticSearch
很久以前
是時候重新索引!
重命名和刪除舊索引
但是,在重新索引所有文檔時會發生什么,從一個用戶更新在開頭重新編制索引的文檔。 或者重新索引和重命名別名之間的上述幸福感?
可能的解決方案 ?
我認為這是你真正的問題:
但是,在重新索引所有文檔時會發生什么,從一個用戶更新在開頭重新編制索引的文檔。 或者重新索引和重命名別名之間的上述幸福感?
我剛剛問了一個非常接近的問題 ,但仍有問題需要單獨解決。 但是,我的研究讓我回答了這個問題。 有關詳細信息和參考,請參閱問題。
要回答您的問題,請在重建索引之前創建第二個別名。 我稱之為duplicate_write_alias
並且你有你的應用程序,如果它看到了這個第二個別名,先通過兩個別名寫入舊索引和新索引。 (該命令對取消潛在比賽非常重要)。 索引完成后,索引過程將刪除此duplicate_write_alias
,並將MY_INDEX
別名移動到新的MY_INDEX_2
,如上所述。 在一個原子命令中執行別名切換。
正如我在我的問題中所提到的,你仍然需要處理潛在的'索引不存在'錯誤,因為你的應用程序檢查是否存在別名和刪除了別名之間的剩余競爭。 我希望有一個比'總是寫兩次並忽略錯誤'或'檢查並希望最好'的答案更好的答案......
我認為還有另一種(更丑陋的方式):你可以在重建索引時禁用源索引的寫操作,這會導致暫時不可用的api,你不必:
缺點:
有關詳細信息,請訪問: https : //www.elastic.co/guide/en/elasticsearch/reference/6.2/index-modules.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.