【问题标题】:MySQL & ElasticSearch DatabaseMySQL 和 ElasticSearch 数据库
【发布时间】:2017-11-24 06:52:22
【问题描述】:
我是 ES 新手,对如何使用 mysql 和 ES 有点困惑。
所以,我想使用 ES DB 和 mysql DB - 所以 ES 始终是我的 mysql DB 的副本,以便更快地执行搜索和获取数据。
在SQL命令运行良好后,我有了一个在ES中保存、更新和删除数据的想法。但是,后来我听说了 JDBC River——我不知道哪种方法更好。
我认为我提到的第一种方式更好,但是网络上的意见太多,所以我不知道哪些是相关的。
【问题讨论】:
标签:
php
mysql
elasticsearch
【解决方案1】:
这完全取决于您的用例。如果数据插入率较低,则可以使用第一种方法(成功将数据插入 RDBMS 后,将相同的数据触发到 Elasticsearch 中)。如果您的数据索引率非常高,那么最好先在 MySQL 中索引数据,然后每隔 1min 或 5min 使用 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