使用多个 csv 生成多个类型

Generate multiple types with multiple csv

我正在尝试根据各种 csv 在同一索引中生成各种类型。因为我不知道 csv 的数量,所以为每个输入都进行输入是不可行的。 那么有谁知道如何用文件名生成类型,并在其中分别引入csv?

input {
  file {
    path => "/home/user/Documents/data/*.csv"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  } 
}


filter { 
    
    csv {
        separator => ","
        skip_header => "true"
        autodetect_column_names => true
        autogenerate_column_names => true
    }
}

output {
   elasticsearch {
     hosts => "http://localhost:9200"
     index => "final_index"

  }

stdout {}

}

非常感谢

从第 6 版开始,Elasticsearch 索引中删除了同一索引中的多个文档结构,如果文档看起来与索引模板化的方式不同,它将无法向其发送数据,什么您可以做的是确保所有字段都是已知的,并且您有一个包含所有可能字段的通用模板。

为什么要将所有内容都放在一个索引中?

如果是用于查询目的或 Kibana,请知道您可以在搜索时使用通配符并具有 Kibana 的模式。

评论后更新:

使用过滤器使用 grok 提取文件名

filter {
  grok {
    match => ["path","%{GREEDYDATA}/%{GREEDYDATA:filename}\.csv"]
  }
}

并在输出中使用文件名,如下所示:

elasticsearch {
   hosts => "http://localhost:9200"
   index => "final_index-%{[filename]}"
}