更改elasticsearch索引的时间戳格式
changing the timestamp format of elasticsearch index
我正在尝试将日志记录加载到 elasticsearch (7.3.1) 中并在 kibana 中显示结果。我面临的事实是,尽管记录已加载到 elasticearch 中并且 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 命令来更改索引,我将非常高兴。
谢谢你的帮助,Ruud
您可以像这样通过 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"
}
}
}
另外值得注意的是,一旦创建了 index/mapping,您通常无法修改它 (very few exceptions)。您可以使用正确的映射创建新索引并将数据重新索引到其中。
我正在尝试将日志记录加载到 elasticsearch (7.3.1) 中并在 kibana 中显示结果。我面临的事实是,尽管记录已加载到 elasticearch 中并且 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 命令来更改索引,我将非常高兴。
谢谢你的帮助,Ruud
您可以像这样通过 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"
}
}
}
另外值得注意的是,一旦创建了 index/mapping,您通常无法修改它 (very few exceptions)。您可以使用正确的映射创建新索引并将数据重新索引到其中。