我正在试用x pack中的新机器学习模块。我正在尝试及时识别HTTP Access日志中罕见的响应代码。我的日志存储在elasticsearch中,如下所示:
{
"_index": "logstash-2017.05.18",
"_type": "Accesslog",
"_id": "AVxvVfFGdMmRr-0X-J5P",
"_version": 1,
"_score": null,
"_source": {
"request": "/web/Q123/images/buttons/asdf.gif",
"server": "91",
"auth": "-",
"ident": "-",
"verb": "GET",
"type": "Accesslog",
"path": "/path/to/log",
"@timestamp": "2017-05-18T10:20:00.000Z",
"response": "304",
"clientip": "1.1.1.1",
"@version": "1",
"host": "ip-10-10-10-10",
"httpversion": "1.1",
"timestamp": "18/May/2017:10:20:00 +0530"
},
"fields": {
"@timestamp": [
1495102800000
]
}
我添加了一个探测器,我选择该功能为'rare',将by_field_name'选为'response'。但是当我保存这份工作时,我收到以下错误:
Save failed: [illegal_argument_exception] Can't merge a non object mapping [response] with an object mapping [response]
请帮忙。
答案 0 :(得分:1)
错误消息表示您正在尝试更改现有映射。但是,这在Elasticsearch中是不可能的。创建映射后,无法更改。
As explained by Shay Banon himself:
您无法更改现有的地图类型,您需要创建新的索引 使用正确的映射并再次索引数据。
因此,您必须创建一个新索引来创建此映射。根据具体情况,您可以
当然在后一种情况下,您将丢失索引中的所有数据,因此请做好相应准备。