2017-05-21 48 views
0

我想在我的項目中使用Elasticsearch。我正在使用Nodejs和postgresql。Elasticsearch jdbc進口商在Nodejs和postgresql

我想連接postgresql和elasticsearch,爲此我使用的是jdbc-importer。我遵循他們的文檔中寫的步驟來連接postgresql,並且我通過命令行成功完成了這個任務。

我想通過的NodeJS用我的項目中的JDBC-進口商

commondline代碼運行JDBC進口商:

bin=/Users/mac/Documents/elasticsearch-jdbc-2.3.4.1/bin 
lib=/Users/mac/Documents/elasticsearch-jdbc-2.3.4.1/lib 
echo '{ 
    "type" : "jdbc", 
    "jdbc" : { 
     "url" : 
     "jdbc:postgresql://localhost:5432/development", 
     "sql" : "select * from \"Products\"", 
     "index" : "product", 
     "type" : "product", 
    "elasticsearch" : { 
    "cluster" : "elasticsearch", 
    "host" : "localhost", 
    "port" : 9300 
} 
    } 
}' | java \ 
     -cp "${lib}/*" \ 
     org.xbib.tools.Runner \ 
     org.xbib.tools.JDBCImporter 

上面的命令已在elasticsearch創建的索引的產品,它也有從產品表中的數據postgresql。

現在,我想通過nodejs使用該jdbc導入程序,並且如果有人也知道在elasticsearch中管理postgresql數據的其他有效方法,那麼也歡迎他們提供回答。

回答

0

您可以使用Logstash: https://www.elastic.co/blog/logstash-jdbc-input-plugin

有了它,你可以從Postgres的數據傳送到ElasticSearch。這是我的配置文件:

input { 
    jdbc { 
    # Postgres jdbc connection string to our database, mydb 
    jdbc_connection_string => "jdbc:postgresql://localhost:5432/MyDB" 
    # The user we wish to execute our statement as 
    jdbc_user => "postgres" 
    jdbc_password => "" 
    # The path to our downloaded jdbc driver 
    jdbc_driver_library => "postgresql-42.1.1.jar" 
    # The name of the driver class for Postgresql 
    jdbc_driver_class => "org.postgresql.Driver" 
    # our query 
    statement => "SELECT * from contacts" 
    } 
} 
output { 
    elasticsearch { 
    hosts => ["localhost:9200"] 
    index => "contacts" 
    document_type => "contact" 
    document_id => "%{uid}" 
    } 
}