Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用logstash将数据从mysql导入elasticsearch_Mysql_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Logstash_Logstash Jdbc - Fatal编程技术网 elasticsearch,logstash,logstash-jdbc,Mysql,elasticsearch,Logstash,Logstash Jdbc" /> elasticsearch,logstash,logstash-jdbc,Mysql,elasticsearch,Logstash,Logstash Jdbc" />

使用logstash将数据从mysql导入elasticsearch

使用logstash将数据从mysql导入elasticsearch,mysql,elasticsearch,logstash,logstash-jdbc,Mysql,elasticsearch,Logstash,Logstash Jdbc,我想用logstash将数据从MySQL数据库导入elasticsearch。我已经能够导入自定义查询结果,但是我缺少了定义logstash创建的索引的映射/设置的点。此外,我不知道如何导入具有一对多关系的数据 这是目前为止我的logstash.conf: input { jdbc { jdbc_connection_string => "jdbc:mysql://localhost:3306/shop" jdbc_user => "root" jdbc_pa

我想用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。这是针对在线商店的,因此我必须在字段上使用一些分析器。我已经查阅了LogStash的ES插件文档,不确定这是否可行

但是,可以在运行LogStash之前设置索引映射。您可以通过将索引映射与cURL放在一起,或者有一种方法可以使用LogStash执行此HTTP请求

看 及

  • 对于映射/设置,可以使用Elasticsearch rest API
  • 创建映射/设置后,在
    logstash.conf
    文件中使用相同的索引名
  • 如果您的表(
    SELECT*FROM variants var
    )有许多列,并且您不想导入所有列,请使用mutator删除不需要的列:

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

    filter { mutate {  rename => { "id" => "ID" }}}
    
  • 可以像添加select查询一样添加Join查询


  • 我已经阅读了文档,得出了相同的结果。如果是这样,我知道如何使用curl放置索引映射,但是嵌套字段呢?你知道吗?简单的“内部连接”不起作用,那么您可以使用类似`过滤器{mutate{rename=>{“columnToNest”=>“[level1][level2]”}}`