elasticsearch Elasticsearch索引的Logstash中的小写字段名,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch Elasticsearch索引的Logstash中的小写字段名,elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch Elasticsearch索引的Logstash中的小写字段名

elasticsearch Elasticsearch索引的Logstash中的小写字段名,elasticsearch,logstash,elasticsearch,Logstash,我有一个logstash命令,我正在将一个文件传输到该命令,该文件将写入Elasticsearch。我想使用一个字段来选择要写入的索引(appName)。但是,该字段中的数据并非都是小写的,因此我需要在选择索引时这样做,但我不希望修改文档本身中的数据 我在下面进行了一次尝试,首先将原始字段(appName)复制到新字段(appNameIndex),将新字段小写,从上载中删除,然后使用它选择索引 input { stdin { type => stdin } } filter {

我有一个logstash命令,我正在将一个文件传输到该命令,该文件将写入Elasticsearch。我想使用一个字段来选择要写入的索引(
appName
)。但是,该字段中的数据并非都是小写的,因此我需要在选择索引时这样做,但我不希望修改文档本身中的数据

我在下面进行了一次尝试,首先将原始字段(
appName
)复制到新字段(
appNameIndex
),将新字段小写,从上载中删除,然后使用它选择索引

input {
      stdin { type => stdin }
}
filter {
  csv {
     separator => " "
     columns => ["appName", "field1", "field2", ...]
     convert => {
         ...
  }
}

filter {
  mutate {
    copy => ["appName", "appNameIndex"]
  }
}

filter {
  mutate {
    lowercase => ["appNameIndex"]
  }
}

filter {
  mutate {
    remove_field => [
      "appNameIndex", // if I remove this it works
       ...
    ]
  }
}

output {
   amazon_es {
     hosts =>
         ["my-es-cluster.us-east-1.es.amazonaws.com"]
     index => "%{appNameIndex}"
     region => "us-east-1"
  }
}
然而,我得到的错误是

Invalid index name [%{appIndexName}]
显然它没有抓住我的变异。是因为移除部分将其完全取出吗?我希望刚从文件上传中删除它。我做得不对吗


更新我尝试取出“删除索引名”部分,它确实起作用,因此有助于识别错误的来源。现在的问题是,我该如何避开它。删除配置的这一部分后,我基本上有两个数据相同的字段,一个小写,一个非

您可以定义一个
@metadata
字段,它是一个特殊字段,永远不会包含在输出中

input {
  stdin { type => stdin }
}
filter {
   csv {
      separator => " "
      columns => ["appName", "field1", "field2", ...]
      convert => {
      ...
   }
}
filter {
   mutate {
      copy => ["appName", "[@metadata][appNameIndex]"]
   }
}
filter {
   mutate {
      lowercase => ["[@metadata][appNameIndex]"]
   }
}
output {
   amazon_es {
      hosts => ["my-es-cluster.us-east-1.es.amazonaws.com"]
      index => "%{[@metadata][appNameIndex]}"
      region => "us-east-1"
   }
}