首页 > 解决方案 > 更改elasticsearch索引的时间戳格式

问题描述

我正在尝试将日志记录加载到 elasticsearch (7.3.1) 并在 kibana 中显示结果。我面临的事实是,尽管记录已加载到 elasticsearch 并且 curl GET 显示它们,但它们在 kibana 中不可见。

大多数情况下,这是因为时间戳格式。就我而言,正确的时间戳格式应该是 basic_date_time,但索引只有:

# curl -XGET 'localhost:9200/og/_mapping'
{"og":{"mappings":{"properties":{"@timestamp":{"type":"date"},"componentName":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}}}}}}% 

我想将格式“basic_date_time”添加到@timestamp 属性,但我所做的每次尝试要么不被elasticsearch 接受,要么不会更改索引字段。我只是没有得到正确的命令来完成这项工作。

例如,我能想到的最简单的,

Z cr 23;curl -H 'Content-Type: application/json' -XPUT 'http://localhost:9200/og/_mapping' -d'
{"mappings":{"properties":{"@timestamp":{"type":"date","format":"basic_date_time"}}}}
'

给出错误

{"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"Root mapping definition has unsupported parameters:  [mappings : {properties={@timestamp={format=basic_date_time, type=date}}}]"}],"type":"mapper_parsing_exception","reason":"Root mapping definition has unsupported parameters:  [mappings : {properties={@timestamp={format=basic_date_time, type=date}}}]"},"status":400}% 

并尝试通过 kibana 来做到这一点

PUT /og
{
  "mappings": {
    "properties": {
      "@timestamp":    { "type": "date", "format": "basic_date_time" } 
    }
  }
}

{
  "error": {
    "root_cause": [
      {
        "type": "resource_already_exists_exception",
        "reason": "index [og/NIT2FoNfQpuPT3Povp97bg] already exists",
        "index_uuid": "NIT2FoNfQpuPT3Povp97bg",
        "index": "og"
      }
    ],
    "type": "resource_already_exists_exception",
    "reason": "index [og/NIT2FoNfQpuPT3Povp97bg] already exists",
    "index_uuid": "NIT2FoNfQpuPT3Povp97bg",
    "index": "og"
  },
  "status": 400
}

我不确定我是否应该在 kibana 中尝试这个。但如果我能找到正确的 curl 命令来更改索引,我会非常高兴。

谢谢你的帮助,路德

标签: elasticsearchkibana

解决方案


你可以像这样通过 curl 来做到这一点:

curl -H 'Content-Type: application/json' -XPUT 'http://localhost:9200/og/_mapping' -d '{
  "properties": {
    "@timestamp": {
      "type": "date",
      "format": "basic_date_time"
    }
  }
}

'

或者像这样在 Kibana 中:

PUT /og/_mapping
{
  "properties": {
    "@timestamp": { 
        "type": "date", 
        "format": "basic_date_time" 
    } 
  }
}

另外值得注意的是,一旦创建了索引/映射,您通常不能修改它(很少有例外)。您可以使用正确的映射创建新索引并将数据重新索引到其中。


推荐阅读