2017-06-21 52 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