【发布时间】:2020-10-07 18:20:10
【问题描述】:
我有一个包含 400 多条记录的数据库表,但每次我使用 logstash 和 JDBC 时它只能得到 126 条记录。我每次都用不同的索引尝试了很多次,但仍然只有 126 检索。
这是输出配置:
input {
jdbc {
-
-
jdbc_driver_class => "org.postgresql.Driver"
statement => "SELECT * from xfailure"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
manage_template => false
index => "test_predictions"
document_id => "%{id}"
}
}
当我检查行数时,我发现它有 400+ 条记录,这里是 select 语句:
SELECT * FROM xfailure;
这里是记录列的示例:
id|modified|x_url|x_id|correlation_id|links|code|description|explanation|tr_id
我在 Kibanna 上创建索引时,我使用时间戳作为时间字段,但点击次数仅为 162 次!
【问题讨论】:
-
logstah 或 elasticsearch 日志中是否有错误?您是否预定义了索引映射或依赖自动映射?
-
@ibexit
index => "test_predictions"如果您的意思是通过索引映射指定存储数据的索引,那么是的,我指定了它。我也尝试过指定和不指定 document_id。 -
不,elastic 为每个索引创建一个映射,它是一种定义了所有字段和数据类型的模式。如果您没有指定一个,elastic 会尝试根据传入的文档来猜测它。如果存在与自动猜测的架构(即映射)不匹配的文档,它们将不会被索引。
-
@ibexit 我正在从 postgresql 数据库表中检索数据,所以我认为没有机会拥有多个模式。
-
有一个混合字段就足够了,其中字符串或数字是可取的。带有数字的第一个 dic 进来,映射的弹性猜测将是数字,然后,另一个 doc 进来一个字符串作为这个字段的值 - bam!看看日志,也许它是不同的......
标签: postgresql elasticsearch logstash logstash-configuration logstash-jdbc