gpt4 book ai didi

Mysql 到 Elasticsearch - 不会创建索引和导出数据

转载 作者:搜寻专家 更新时间:2023-10-30 22:35:28 25 4
gpt4 key购买 nike

我正在尝试将一个 MySQL 表导入 Elasticsearch。它是一个包含 10 个不同列的表,其中一个 8 位 VARCHAR 设置为主键。 MySQL 数据库位于远程主机上。

为了将数据从 MySQL 传输到 Elasticsearch,我决定使用 Logstash 和 jdbc MySQL 驱动程序。

如果索引不存在,我假设 Logstash 会为我创建索引。

这是我的 logstash.conf 脚本:

input{ 

jdbc {
jdbc_driver_library => "/home/user/logstash/mysql-connector-java-5.1.17-bin.jar"

jdbc_driver_class => "com.mysql.jdbc.Driver"

jdbc_connection_string => "jdbc:mysql://[remotehostipnumber]/databasename"

jdbc_validate_connection => true

jdbc_user => "username"

jdbc_password => "password"

schedule => "* * * * *"

statement => "select * from table"

}

}

output

{
elasticsearch
{

index => "tables"
document_type => "table"
document_id => "%{table_id}"
hosts => "localhost:9200"
}stdout { codec => json_lines }
}

当运行 logstash config test 时,它会输出“Configration OK”消息:

sudo /opt/logstash/bin/logstash --configtest -f /home/user/logstash/logstash.conf

同样在执行 logstash.conf 脚本时,Elasticsearch 输出:

Settings: Default filter workers: 1
Logstash startup completed

但是当我去查看索引是否已经创建,数据是否也已经添加的时候:

curl -XGET 'localhost:9200/tables/table/_search?pretty=true'

我得到:

{
"error" : {
"root_cause" : [ {
"type" : "index_not_found_exception",
"reason" : "no such index",
"resource.type" : "index_or_alias",
"resource.id" : "tables",
"index" : "table"
} ],
"type" : "index_not_found_exception",
"reason" : "no such index",
"resource.type" : "index_or_alias",
"resource.id" : "tables",
"index" : "tables"
},
"status" : 404
}

数据未被索引的潜在原因是什么?

附言。我让 Elasticsearch 服务器在单独的终端窗口中运行,以确保 Logstash 可以连接并与之交互。

最佳答案

对于那些最终来到这里寻找类似问题的答案的人。

我的数据库有 400 万行,对于 logstash/elasticsearch/jdbc 驱动程序来说,用一个命令处理它肯定太多了。

在我将初始传输分成 4 个独立的工作 block 之后,脚本运行并将所需的表添加到 elasticsearch NoSQL 数据库中。

关于Mysql 到 Elasticsearch - 不会创建索引和导出数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38002435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com