2017-06-21 55 views
0

我是ES新手,對如何使用mysql & ES感到困惑。MySQL&ElasticSearch數據庫

因此,我想使用ES DB & mysql數據庫 - 所以ES總是我的mysql數據庫的副本,以執行搜索和更快地獲取數據。

在SQL命令執行完成後,我有一個想法來保存,更新和刪除ES中的數據。但是,後來我聽說了JDBC河 - 我不知道哪種方法更好。

我覺得我提到的第一種方式比較好,但網絡上有太多的意見,所以我不知道哪一個是相關的。

+1

這個答案可能會幫助:https://stackoverflow.com/questions/34477095/elasticsearch-replication-of-other-system-data/34477639#34477639 – Val

回答

0

這完全取決於你的用例。如果數據插入比率較低,那麼您可以採用第一種方法(將數據成功插入RDBMS後將相同的數據觸發到Elasticsearch中)。如果你的數據指標比例非常高,那麼最好先在MySQL中索引數據,然後在1min5min之後使用Logstash Input JDBC plugin從MySQL查詢數據。第二種方法的優點是,在您的服務器上創建任何網絡開銷的機會將會減少。

我在我的用例中使用Logstash Input jdbc插件。對於例如

input { 
    jdbc { 
    jdbc_driver_library => "/home/roop/logstash/mysql-connector-java-5.1.36.jar" 
    jdbc_driver_class => "com.mysql.jdbc.Driver" 
    jdbc_connection_string => "jdbc:mysql://localhost:3306/ecommerce" 
    jdbc_user => "roopendra" 
    jdbc_password => "roopendra" 
    parameters => { "product_category" => "electronics" } 
    schedule => "* * * * *" 
    statement => "select * from products where category = :product_category" 
    } 
} 
output { 
    elasticsearch { 
     index => "products" 
     document_type => "product" 
     document_id => "%{unique_id_field_name}" 
     hosts => ["localhost:9200"] 
    } 
} 

For Reference