elasticsearch 是否可以在.conf文件中拆分路径路由?,elasticsearch,logstash,logstash-grok,logstash-configuration,elasticsearch,Logstash,Logstash Grok,Logstash Configuration" /> elasticsearch 是否可以在.conf文件中拆分路径路由?,elasticsearch,logstash,logstash-grok,logstash-configuration,elasticsearch,Logstash,Logstash Grok,Logstash Configuration" />

elasticsearch 是否可以在.conf文件中拆分路径路由?

elasticsearch 是否可以在.conf文件中拆分路径路由?,elasticsearch,logstash,logstash-grok,logstash-configuration,elasticsearch,Logstash,Logstash Grok,Logstash Configuration,我正在尝试以更大的可伸缩性来编写这个.conf文件,我的想法是,为了在elasticsearch中有多个索引,分割路径并获得csv名称的最后位置,并将其设置为elasticsearch中的类型和索引 import pandas as pd import numpy as np input { file { path => "/home/aitor2/RETO8/BIGDATA/df_suministro_activa.csv" start_posi

我正在尝试以更大的可伸缩性来编写这个.conf文件,我的想法是,为了在elasticsearch中有多个索引,分割路径并获得csv名称的最后位置,并将其设置为elasticsearch中的类型和索引

import pandas as pd
import numpy as np

input {
  file {
    path => "/home/aitor2/RETO8/BIGDATA/df_suministro_activa.csv"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
  file {
    path => "/home/aitor2/RETO8/BIGDATA/df_activo_consumo.csv"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
}
path2 = path.split('/')[-1]
filter {
if [path] == "/home/aitor2/RETO8/BIGDATA/df_suministro_activa.csv"{
    mutate { replace => { type => path2 } } 
  csv {
      separator => ","
      skip_header => "true"
      autodetect_column_names => true
  }
     ruby {
    code => "event.to_hash.each { |k, v|
    if k.start_with?('Linea') and v.is_a?(String)
      event.set(k, v.to_f)
    end
}
  "
}
  
}
else if [path] == "/home/aitor2/RETO8/BIGDATA/df_activo_consumo.csv"{
    mutate { replace => { type => "apaches2" } } 
  csv {
      separator => ","
      skip_header => "true"
      autodetect_column_names => true
  }
   ruby {
    code => "event.to_hash.each { |k, v|
    if k.start_with?('Smart') and v.is_a?(String)
      event.set(k, v.to_f)
    end
}
  "
}
  
 }



}

output {
   elasticsearch {
     hosts => "http://localhost:9200"
     index => "%{type}_indexer"
 }
  
stdout {codec => rubydebug}

}

我试着用
path2=path.split('/')[-1]
来做,但我不确定这是否可行。

过滤器部分,将
类型的值设置为文件名(
df_suministro_activa.csv
df_activo_consumo.csv
)。为此,我使用了
grok
<代码>变异
是另一种可能性

然后可以在输出/if-else/更改其值等中使用
类型

input {
  file {
    path => "/home/aitor2/RETO8/BIGDATA/df_suministro_activa.csv"
    ...
  }
  file {
    path => "/home/aitor2/RETO8/BIGDATA/df_activo_consumo.csv"
    ...
  }
}

filter {
  grok { match { "path" => "UNIXPATH/(?<type>[^/]+)" } }

  if [type] == "df_suministro_activa.csv" {
    ...
  }
  else if [type] == "df_activo_consumo.csv" {
    mutate { replace => { type => "apaches2" } } 
    ...
  }
}

output {
   elasticsearch {
     hosts => "http://localhost:9200"
     index => "%{type}_indexer"
  }
}
输入{
文件{
path=>“/home/aitor2/RETO8/BIGDATA/df_suministro_activa.csv”
...
}
文件{
path=>“/home/aitor2/RETO8/BIGDATA/df_activo_consumo.csv”
...
}
}
滤器{
grok{match{“path”=>“UNIXPATH/(?[^/]+)”}
如果[type]=“df_suministro_activa.csv”{
...
}
如果[type]=“df\u activo\u consumo.csv”则为else{
变异{replace=>{type=>“apaches2”}
...
}
}
输出{
弹性搜索{
主机=>”http://localhost:9200"
index=>“%{type}\u索引器”
}
}
我不确定
路径
字段;您可能希望尝试
[log][file][path]
而不是
过滤器
块中的
路径