elasticsearch logstash remove_字段不工作,无法将csv上载到elasticsearch,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana" /> elasticsearch logstash remove_字段不工作,无法将csv上载到elasticsearch,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana" />

elasticsearch logstash remove_字段不工作,无法将csv上载到elasticsearch

elasticsearch logstash remove_字段不工作,无法将csv上载到elasticsearch,elasticsearch,logstash,kibana,elasticsearch,Logstash,Kibana,我正在使用elasticsearch、kibana和Logstash6.0.1 我希望通过日志存储和删除字段(路径、@timestamp、@version、主机和消息)将csv数据上载到elasticsearch。我在下面显示logstash.conf和emp.csv文件。如果我不使用remove_字段指令,上传将起作用,但我需要这样做。此外,没有创建索引 logstash.conf: input { file { path => "e:\emp.csv" s

我正在使用elasticsearch、kibana和Logstash6.0.1

我希望通过日志存储和删除字段(路径、@timestamp、@version、主机和消息)将csv数据上载到elasticsearch。我在下面显示logstash.conf和emp.csv文件。如果我不使用remove_字段指令,上传将起作用,但我需要这样做。此外,没有创建索引

logstash.conf:

input {

  file {
      path => "e:\emp.csv"
      start_position => "beginning"
  }
}
filter {
  csv {
      separator => ","
      columns => ["code","color"]
      remove_field => ["path", "@timestamp", "@version", "host", "message"]
  }

  mutate {convert => ["code", "string"]}
  mutate {convert => ["color", "string"]}

}
output {
  elasticsearch {
    hosts => "http://localhost:9200"
    index => "emp5"
    user => "elastic"
    password => "password"
  }
  stdout {}
}
emp.csv:

1,blue
2,red

这种情况下缺少什么?

在您的
csv
文件中,您试图删除的数据不可用

改为尝试删除例如
path
host
字段:

(...)
filter {
  csv {
      separator => ","
      columns => ["code","color"]
  }
    mutate {
      remove_field => ["path", "host"]
    }
(...)
作为参考,如果字段
path
和/或
host
不存在,则没有问题。如果字段存在,插件将删除字段,如果字段不存在,插件将什么也不做

编辑: 我已经在新鲜的
弹性堆栈上测试过了

您可以使用以下命令删除索引:

curl -X DELETE "localhost:9200/emp5"
还请注意,在当前配置中,日志存储只会读取文件一次。 您可以通过添加
sincedb\u path=>“/dev/null”
或者在
Windows
案例中:
sincedb\u path=>“NUL”
内部:

input {
    file {
           (...) # here
         }

然后在
logstash
工作后,使用以下工具验证结果:

curl -X GET "localhost:9200/emp5?pretty"
{
  "emp5" : {
    "aliases" : { },
    "mappings" : {
      "doc" : {
        "properties" : {
          "@timestamp" : {
            "type" : "date"
          },
          "@version" : {
            "type" : "text",
            "fields" : {
              "keyword" : {
                "type" : "keyword",
                "ignore_above" : 256
              }
            }
          },
          "code" : {
            "type" : "text",
            "fields" : {
              "keyword" : {
                "type" : "keyword",
                "ignore_above" : 256
              }
            }
          },
          "color" : {
            "type" : "text",
            "fields" : {
              "keyword" : {
                "type" : "keyword",
                "ignore_above" : 256
              }
            }
          },
          "message" : {
            "type" : "text",
            "fields" : {
              "keyword" : {
                "type" : "keyword",
                "ignore_above" : 256
              }
            }
          }
        }
      }
    },
    "settings" : {
      "index" : {
        "number_of_shards" : "5",
        "blocks" : {
          "read_only_allow_delete" : "true"
        },
        "provided_name" : "emp5",
        "creation_date" : "1576099826712",
        "number_of_replicas" : "1",
        "uuid" : "reXYzqPgQryYcASoov9l5A",
        "version" : {
          "created" : "6080599"
        }
      }
    }
  }
}

如您所见,没有
主机
路径
字段。

Ok。我添加了remove_字段进行变异,但得到了相同的结果。索引没有创建。@user3637971您说您添加了它,但您是否也从
csv
filter中删除了它?我添加了mutate,并从csv filter中删除了它。@user3637971我编辑了答案以进一步帮助您。是的,您是对的。正在删除路径和主机。然后我添加了消息、时间戳和版本以删除_字段。添加sincedb_path=>“NUL”是必要的。谢谢