将多个MySQL表移动到同一索引中的ElasticSearch

时间:2018-03-18 17:00:57

标签: mysql elasticsearch lucene logstash

我正在将我的数据库迁移到ElasticSearch。它的当前大小小于3G,并且由于许多字段在表中很常见,所以我决定使用单个索引来存储它们。

这是我的Logstash配置:

input {
  jdbc { 
    jdbc_connection_string => "jdbc:mysql://localhost:3306/cinestop?
useUnicode=yes&characterEncoding=UTF-8"
    jdbc_user => "root"
    jdbc_password => "abc"
    # The path to our downloaded jdbc driver
    jdbc_driver_library => 
"/home/limafoxtrottango/Downloads/elasticsearch-jdbc-2.3.4.0/lib/mysql-connector-java-5.1.38.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
statement => "SELECT * FROM media_adult"
       }
}
output {
  stdout { codec => json_lines }
  elasticsearch {
  "hosts" => "localhost:9200"
  "index" => "cinestop"
  "document_type" => "media_adult"
       }
}

我已经使用此表导入了上一个表(具有一些公共字段)。现在,我收到以下错误:

"Rejecting mapping update to [cinestop] as the final mapping would have more than 1 type: [media_adult, media_id]"}}}}

我已经阅读了文档,并且它提到ES不会让你在同一个索引中拥有不同类型的多个字段,因为Apache Lucene中的映射是如何完成的。但即使我做了

SELECT adult FROM media_adult

在配置文件中(结果表格中没有任何常用字段与之前导入的表格),错误不会消失。

有人可以告诉我,我做错了什么?我应该为每种类型创建一个单独的索引吗?

谢谢!

0 个答案:

没有答案