【问题标题】: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 中索引数据,然后每隔 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

【讨论】:

    猜你喜欢
    • 2015-05-13
    • 2017-04-29
    • 1970-01-01
    • 2013-06-23
    • 2012-01-26
    • 2015-07-20
    • 2014-02-13
    • 2011-12-23
    • 2018-05-21
    相关资源
    最近更新 更多