8

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

我添加了一个检测器,我将函数选为“稀有”,将 by_field_name 选为“响应”。但是当我保存作业时,出现以下错误:

Save failed: [illegal_argument_exception] Can't merge a non object mapping [response] with an object mapping [response]

请帮忙。

4

1 回答 1

4

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

正如 Shay Banon 本人所解释的

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

所以你必须创建一个新的索引来创建这个映射。根据情况,你要么

  • 创建一个额外的索引,或
  • 删除当前索引并从头开始重新创建它。

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

于 2017-10-27T07:27:56.027 回答