首页 > 解决方案 > ElasticSearch Logstash 为日期上传空值

问题描述

我正在尝试使用logstash(6.3.1)将文档批量上传到elasticsearch(6.3)。日期中文档中的字段之一。下面是我的映射类型`

{
  "mappings": {
      "users" : {
        "properties" : {
            "name" : { "type" : "text" },
            "location" : { "type" : "geo_point"},
            "date": {
                "type": "date",
                "format": "yyyy-MM-dd"
            }

   }
  }
}

如果没有可用的日期,那么我将其设置为null.

前 csv 上传文档

John, Seattle, null

在上传期间,logstash 将 date 的值读取为"null"( null with quotes) 并且上传到 elasticsearch 失败,因为它不接受"null"作为 date 的有效输入。我的问题是从logstash上传时如何让elasticsearch接受日期null值( )?null without quotes

标签: elasticsearchlogstash

解决方案


不要将其设置为null(作为 csv 文件数据中的字符串)。将其设置为无/无值(即对于任何不存在该值的此类字段,您的 csv 文件可以有,,, 空白值。

在您的情况下,例如:设置如下:

John,Seattle,
Shenzi,Denver,2020-05-11

对于第一行,当 logstash 将读取 csv 文件时(例如:如果您input { stdin{} }在 logstash 的 conf 文件中,那么您将cat somefile.csv | logstash -f <logstash.conf>)它将第三列值视为 '' (将其转换为 ES 索引作为 key=val 对喜欢:date: null免费)


推荐阅读