我正在试用x pack中的新机器学习模块。我试图及时识别HTTP访问日志中的罕见响应代码。我的日志存储在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]
请帮帮我
2条答案
按热度按时间whlutmcx1#
错误消息表示您正在尝试更改现有Map。但是,这在Elasticsearch中是不可能的。一旦创建了Map,就不能更改它。
As explained by Shay Banon himself:
你不能改变现有的Map类型,你需要用正确的Map创建一个新的索引,然后重新索引数据。
因此必须创建一个新索引来创建此Map。根据情况,你要么
当然,在后一种情况下,您将丢失索引中的所有数据,因此请做好相应的准备。
b5lpy0ml2#
我遇到了同样的问题,并找到了解决办法。我的问题是动态JSON中的模型已经改变了,对于一个索引上没有数据的字段,我得到了这样的解决方案
1.创建一个新的索引(PUT /new-index)
1.放入新的Map(PUT /new-index/_mapping)
1.将数据从旧索引重定基到新索引(POST _reindex)
1.删除旧索引(目录/索引)
1.使用新Map创建旧索引(PUT /index,PUT /index/_mapping)
1.从新索引到旧索引重定数据基(POST _reindex)