簡體   English   中英

將數據從PostgreSQL索引到Elasticsearch

[英]Index data from PostgreSQL to Elasticsearch

我想使用多播功能設置一個Elasticsearch集群。一個節點是一個外部Elasticsearch節點,另一個節點是一個節點客戶端(客戶端屬性設置為true-not hold data)。

該節點客戶端是使用spring數據elasticsearch創建的。 所以我想將數據從Postgresql數據庫索引到外部elasticsearch節點。我已經使用jdbc river插件對數據進行了索引。

但是我想知道有沒有可以使用postgresql的索引數據而不是使用river插件的應用程序

盡管它需要編寫專用的Postgres-> ES網關並使用某些Postgres特定的功能,但也可以實時執行此操作。 我在這里寫過: http : //haltcondition.net/2014/04/realtime-postgres-elasticsearch/

原理實際上很簡單,我想出的方法的復雜性是由於處理了一些極端情況,例如多個網關正在運行,並且網關暫時無法使用。 簡而言之,我的解決方案是:

  • 將觸發器附加到所有感興趣的表,該表將更新的行ID復制到臨時表。
  • 觸發器還會發出異步通知,說明行已更新。
  • 一個單獨的網關(用Clojure編寫的我的網關)連接到Postgres服務器,並監聽通知。 這是棘手的部分,因為並非所有Postgres客戶端驅動程序都支持異步通知(有一個新的實驗性JDBC驅動程序可以使用,這就是我所使用的)。
  • 更新時,網關讀取,轉換數據並將數據推送到Elasticsearch。

在我的實驗中,該模型能夠在Postgres行插入/更新之后亞秒內對Elasticsearch進行更新。 顯然,這在現實世界中會有所不同。

這里有一個帶有Vagrant和Docker測試框架的概念驗證項目: https : //bitbucket.org/tarkasteve/postgres-elasticsearch-realtime

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM