2

我想使用logstash将数据从我的MySQL数据库导入elasticsearch。我已经能够导入自定义查询结果,但是我错过了可以定义由 logstash 创建的索引的映射/设置的点。另外,我不知道如何导入具有一对多关系的数据。

到目前为止,这是我的 logstash.conf:

input {
jdbc {
    jdbc_connection_string => "jdbc:mysql://localhost:3306/shop"
    jdbc_user => "root"
    jdbc_password => ""
    jdbc_driver_library => "C:\Users\curUser\Desktop\mysql-connector-java-5.1.42\mysql-connector-java-5.1.42-bin.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"

    statement => "SELECT * FROM variants var"
    }
}

output {
elasticsearch {
    hosts => "localhost:9200"
    index => "search"
    document_type => "variants"
    document_id => "%{id}"
    }
}

注意:我想使用 logstash 只是将数据导入到 elasticsearch。这是一个网上商店,所以我必须在现场使用一些分析仪

4

2 回答 2

0

我查看了 LogStash 的 ES 插件的文档 - 不确定这是否可能。

但是,您可以在运行 LogStash 之前设置索引映射。您可以通过使用 cURL 放置索引映射来做到这一点,或者也许有一种方法可以使用 LogStash 执行此 HTTP 请求

请参阅https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.htmlhttps://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html

于 2017-08-03T11:54:58.347 回答
0
  1. 对于映射/设置,您可以使用 Elasticsearch REST API
  2. 创建映射/设置后,在logstash.conf文件中使用相同的索引名称
  3. 如果您的表 ( SELECT * FROM variants var) 有很多列并且您不想导入所有列,请使用 mutator 删除不需要的列:

    filter { mutate {  remove_field => ["@version", "@timestamp", "column"]}}
    
  4. 如果要重命名列,请使用:

    filter { mutate {  rename => { "id" => "ID" }}}
    
  5. 可以像添加选择查询一样添加连接查询。

于 2018-08-10T10:28:11.380 回答