如何从 elasticsearch 中的模板映射新索引
How to map new index from templates in elasticsearch
让我们从我的设置开始吧。
应用程序服务器将日志文件发送到 Kinesis 数据流,后者又将它们发送到 Kinesis firehose,后者最终将它们发送到 Elastic Search。
所有的运动组件都是 AWS 特定的工具。
换句话说,这意味着我几乎无法控制 elasticsearch 之前的设置。
也就是说,日志正在正确流动并到达 elasticsearch。到目前为止,一切都很好。
问题是映射完全错误。所有字段都标记为文本,没有时间戳被识别。
我已经为具有正确映射的新索引准备了一个模板:
{
"cms_access-template": {
"order": 0,
"index_patterns": [
"cms_access-*"
],
"settings": {},
"mappings": {
"properties": {
"request": {
"type": "text"
},
"referrer": {
"type": "text"
},
"agent": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"size": {
"type": "integer"
},
"ident": {
"type": "text"
},
"host": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"client": {
"type": "ip"
},
"time": {
"type": "integer"
},
"user": {
"type": "text"
},
"X-Forwarder-For": {
"type": "text"
},
"status": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"timestamp": {
"format": "dd/MMM/yyyy:HH:mm:ss +SSSS",
"type": "date"
}
}
},
"aliases": {}
}
}
如您所见,这是一个简单的 apache 访问日志。
当我尝试基于这些索引创建索引模式时,无法识别时间戳并且所有字段都设置为文本。
我是 elasticsearch 的新手,也许我遗漏了什么。
模板是否用于为新索引准备映射?如果有,如何link他们?
我四处搜索,发送带有索引的映射似乎很常见。但我不能这样做,因为 AWS 中使用的运动学工具没有办法。
你能帮我创建新的索引来从模板中获取映射吗?
如前所述,我是 elasticsearch 的新手:-)
经过大量的思考之后,我在某个论坛上看到一条评论,它为我指明了正确的方向。
当您发送数据时,模板 已经 存在是必要的。
因此,我删除了所有已发送的数据,创建了模板,然后才发送了新数据。之后映射按照模板中的描述工作。
让我们从我的设置开始吧。 应用程序服务器将日志文件发送到 Kinesis 数据流,后者又将它们发送到 Kinesis firehose,后者最终将它们发送到 Elastic Search。 所有的运动组件都是 AWS 特定的工具。 换句话说,这意味着我几乎无法控制 elasticsearch 之前的设置。 也就是说,日志正在正确流动并到达 elasticsearch。到目前为止,一切都很好。 问题是映射完全错误。所有字段都标记为文本,没有时间戳被识别。 我已经为具有正确映射的新索引准备了一个模板:
{
"cms_access-template": {
"order": 0,
"index_patterns": [
"cms_access-*"
],
"settings": {},
"mappings": {
"properties": {
"request": {
"type": "text"
},
"referrer": {
"type": "text"
},
"agent": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"size": {
"type": "integer"
},
"ident": {
"type": "text"
},
"host": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"client": {
"type": "ip"
},
"time": {
"type": "integer"
},
"user": {
"type": "text"
},
"X-Forwarder-For": {
"type": "text"
},
"status": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"timestamp": {
"format": "dd/MMM/yyyy:HH:mm:ss +SSSS",
"type": "date"
}
}
},
"aliases": {}
}
}
如您所见,这是一个简单的 apache 访问日志。 当我尝试基于这些索引创建索引模式时,无法识别时间戳并且所有字段都设置为文本。
我是 elasticsearch 的新手,也许我遗漏了什么。 模板是否用于为新索引准备映射?如果有,如何link他们? 我四处搜索,发送带有索引的映射似乎很常见。但我不能这样做,因为 AWS 中使用的运动学工具没有办法。 你能帮我创建新的索引来从模板中获取映射吗?
如前所述,我是 elasticsearch 的新手:-) 经过大量的思考之后,我在某个论坛上看到一条评论,它为我指明了正确的方向。 当您发送数据时,模板 已经 存在是必要的。 因此,我删除了所有已发送的数据,创建了模板,然后才发送了新数据。之后映射按照模板中的描述工作。