Logstash 将相同的数据加载到相同的索引

Logstash loads the same data to same index

我使用logstash加载数据到ES。

我有一个 csv 文件,两列,使用 logstash 基本文件加载,如下所示。

    input {
    file {
        path => "/Users/gibbs/Documents/search/mini_system_data_new.csv"
        start_position => beginning
    }
}
filter {
    csv {
        columns => [
               "secure_flag",
               "mini_system_key"
        ]
        separator => ","
        }
  mutate {
    remove_field => ["path", "host"]
  }
}
output {
    stdout
    {
        codec => rubydebug
    }
     elasticsearch {
        action => "index"
        hosts => ["127.0.0.1:9200"]
        index => "mini_system"
        document_id => "%{mini_system_key}"
    }
}

加载时我没有创建索引。我意识到并创建了索引,但我没有停止 logstash。所以它加载了部分数据。

假设我重新启动了 logstash,但它没有加载。我明白要避免 this issue。但这里我有自定义 ID 字段,这个问题不应该发生。但是没有加载丢失的数据。

作为最糟糕的选择,我重新创建了索引并重新启动了 logstash。但这里没有帮助。

有什么加载数据的建议吗?

编辑:

我认为 logstash 创建了对文件名的引用。我重命名了数据文件并重新启动。它加载数据。

我想你正在寻找 sincedb_path

Logstash 在此位置维护已处理文件的状态。如果删除该文件并重新启动 logstash,它将再次读取该文件。

此外,我认为您不需要为在elasticsearch 中插入数据创建索引。有一个名为 Dynamic Mapping 的功能(除非您已禁用它 smh)。 Elasticsearch 将尝试自动从数据中推断映射。

所以,您错过的数据可能是因为格式不正确而丢失了。 CSV 过滤器过滤掉格式错误的行。尝试通过删除 CSV 过滤器来使用标准输出检查数据。