2

我正在使用jdbc河來同步Elasticsearch和數據庫。已知的問題是,從數據庫中刪除的行保留在ES中,jdbc河插件不能解決這個問題。 jdbc river的作者提出瞭解決問題的方法:Elasticsearch數據庫同步

一個好方法是窗口索引。每個時間範圍(可能每天或每週一次)爲河流創建一個新索引,並添加到別名中。過了一段時間後,舊指數將會下跌。這種維護類似於> logstash索引,但它不在河流範圍內。

我的問題是,這是什麼意思準確的方式?

可以說我有表中的數據庫調用Table有600萬行,我試試如下:

  1. 創建河叫river1,與指數1。 index1包含table1的索引 行。索引1被添加到別名。
  2. table1中的某些行在白天被刪除,因此每天晚上我會創建另一條名爲river2的河流,其索引爲2,其中 僅包含table1中現在存在的內容。
  3. 從別名中刪除舊的索引1並將索引2添加到別名。
  4. 刪除舊的index1。

這是正確的方法嗎?

回答

0

是的,它可以使用_ttl場完成,但我使用腳本它解決。

每晚的腳本都以索引表格開始,並創建當天的索引。索引可以持續數小時。

另一個腳本週期性地從localhost:9200/_river/jdbc/*/_state?pretty讀取輸出並檢查是否所有河流都已完成(通過檢查lastEndDate字段的存在)。當所有的河流完成後,別名會被新創建的索引刷新。舊索引被刪除。