在elasticsearch中格式化日期没有正确地将我的字段设置为日期

问题描述 投票:0回答:2

我看到摄取的日期时间格式为:

yyyyMMdd HH:mm
,但我在网站上没有看到任何可以做到这一点的内容。

https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html

当尝试执行类似上述格式的操作时,尽管它会说“不允许使用空格”,但我不确定发生了什么。我添加了一张照片来展示这一点。 我不确定发生了什么事。当我尝试添加此信息时,我保存了索引模板并将相应地重新索引。

我的最终状态是通过@timestamp进行索引,我想通过这个字段进行索引:tmpstmp

我还注意到,如果我将 tmpstmp 设置为日期类型,摄取将不喜欢它,因为它不是它喜欢的格式。 (上图为20201015 15:17)

[警告] 2020-10-15 21:22:51.645 [[main]>worker0] elasticsearch - 无法将事件索引到 Elasticsearch。 {:status=>400, :action=>["index", {:_id=>nil, :_index=>"transit-pittsburgh-2020.10.15", :routing=>nil, :_type=>"_doc" }, #LogStash::Event:0x2b0e6422], :response=>{"index"=>{"_index"=>"transit-pittsburgh-2020.10.15", "_type"=>"doc", "id "=>"XrMkLnUBgjQQ7Krx5Cr", "status"=>400, "error"=>{"type"=>"mapper_parsing_exception", "reason"=>"无法解析文档中类型为 [date] 的字段 [tmstmp] ID 为“XrMkLnUBgjQQ7Krx5Cr”。字段值预览:“20201015 17:22”,“caused_by”=>{“type”=>“illegal_argument_exception”,“reason”=>“无法解析日期字段 [20201015 17: 22] 格式为 [strict_date_Optional_time||epoch_millis]", "caused_by"=>{"type"=>"date_time_parse_exception", "reason"=>"无法使用所有封闭的解析器进行解析"}}}}}}

我试图调整 Logstash 的摄取来表示:

filter {
  date {
    match => ["tmstmp", "yyyyMMdd hh:mm"]

  }
}

但这似乎也没有做正确的工作。

elasticsearch kibana
2个回答
0
投票

在开发工具中您可以调用 GET /_index_template/template_1 将新的日期格式添加到响应中并将其发回。


0
投票

我也遇到了同样的问题,Kibana 告诉我“不允许使用空格”。

就我而言,我想将“yyyy-MM-dd HH:mm:ss”格式添加到

dynamic_date_formats
。我通过进入 Kibana 中的开发工具并在那里创建了一个组件模板(名为 my-template)来让它工作:

PUT /_component_template/my-template
{
  "template": {
    "mappings": {
      "_doc": {
        "dynamic_date_formats": [
          "strict_date_optional_time",
          "yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z||yyyy-MM-dd HH:mm:ss"
        ]
      }
    }
  },
  "version": 1,
  "_meta": {
    "description": "blabla"
  }
}

然后,如果我在 Kibana 中查看此组件模板,我将看到以下内容:

据我了解,这是默认值:

dynamic_date_formats": [
  "strict_date_optional_time",
  "yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"
]

所以我通过将日期格式附加到最后一行来让它工作。

© www.soinside.com 2019 - 2024. All rights reserved.