elasticsearch,Php,Mysql,elasticsearch" /> elasticsearch,Php,Mysql,elasticsearch" />

Php MySQL&;ElasticSearch数据库

Php MySQL&;ElasticSearch数据库,php,mysql,elasticsearch,Php,Mysql,elasticsearch,我是ES新手,对如何使用mysql&ES有些困惑 因此,我想使用ES-DB和mysql-DB,因此ES总是mysql-DB的一个副本,以便更快地执行搜索和获取数据 在SQL命令运行良好之后,我想到了在ES中保存、更新和删除数据。但是,后来我听说了JDBC河——我不知道哪种方法更好 我认为我提到的第一种方式更好,但是网络上有太多的观点,所以我不知道哪些是相关的。这完全取决于您的用例。如果数据插入率小于此值,则可以使用第一种方法(成功地将数据插入RDBMS后,将相同的数据触发Elasticsearc

我是ES新手,对如何使用mysql&ES有些困惑

因此,我想使用ES-DB和mysql-DB,因此ES总是mysql-DB的一个副本,以便更快地执行搜索和获取数据

在SQL命令运行良好之后,我想到了在ES中保存、更新和删除数据。但是,后来我听说了JDBC河——我不知道哪种方法更好


我认为我提到的第一种方式更好,但是网络上有太多的观点,所以我不知道哪些是相关的。

这完全取决于您的用例。如果数据插入率小于此值,则可以使用第一种方法(成功地将数据插入RDBMS后,将相同的数据触发Elasticsearch)。如果您的数据索引比率非常高,那么最好先在MySQL中索引数据,然后每隔1min5min使用MySQL轮询数据。第二种方法的优点是,在服务器中产生任何网络开销的机会非常少

我在我的用例中使用Logstash输入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"]
    }
}

这个答案可能会有帮助: