如何从 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 的新手:-) 经过大量的思考之后,我在某个论坛上看到一条评论,它为我指明了正确的方向。 当您发送数据时,模板 已经 存在是必要的。 因此,我删除了所有已发送的数据,创建了模板,然后才发送了新数据。之后映射按照模板中的描述工作。