无法将非对象映射与机器学习(beta)模块中的对象映射错误合并

时间:2017-06-08 12:19:59

标签: elasticsearch elasticsearch-x-pack

我正在试用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]

请帮忙。

1 个答案:

答案 0 :(得分:1)

错误消息表示您正在尝试更改现有映射。但是,这在Elasticsearch中是不可能的。创建映射后,无法更改。

As explained by Shay Banon himself

  

您无法更改现有的地图类型,您需要创建新的索引   使用正确的映射并再次索引数据。

因此,您必须创建一个新索引来创建此映射。根据具体情况,您可以

  • 创建其他索引,或
  • 删除当前索引并从头开始重新创建。

当然在后一种情况下,您将丢失索引中的所有数据,因此请做好相应准备。