【问题标题】:LOGSTASH: How to setup logstash to get all query's data not only a part of it?LOGSTASH:如何设置 logstash 以获取所有查询的数据,而不仅仅是其中的一部分?
【发布时间】: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


【解决方案1】:

我找到了一个解决方案,它指定了每个字段,因此通过更改 sql 查询来自:

SELECT * FROM xfailure;

SELECT field_1 as field_1, field_2 as field_2 FROM xfailure;

现在可以正常使用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多