如何让Elasticsearch添加.keyword字段?

slwdgvem  于 2023-10-17  发布在  ElasticSearch
关注(0)|答案(2)|浏览(253)

我正试图获得字段的名称为“IP”被Map为“IP”类型与一个。关键字字段的类型“关键字”。以下Map未创建.keyword字段。我如何使弹性Map这个领域?

"IP": {
    "type": "ip",
    "fields": {
      "keyword": {
        "type": "keyword",
        "ignore_above": 256
      }
    }
}
gmxoilav

gmxoilav1#

我给你举个例子来测试一下。

请注意,添加keyword字段后,应运行POST index_name/_update_by_query更新现有数据。

创建索引

PUT test_ip
{
  "mappings": {
    "properties": {
      "IP": {
        "type": "ip"
      },
      "other_fields": {
        "type": "keyword"
      }
    }
  }
}

(工作)使用_mapping API更新Map

PUT test_ip/_mapping
{
  "properties": {
    "IP": {
      "type": "ip",
      "fields": {
        "keyword": {
          "type": "keyword",
          "ignore_above": 256
        }
      }
    }
  }
}

(error)如果你像下面这样测试,你会得到一个错误。

PUT test_ip
{
  "mappings": {
    "properties": {
      "IP": {
        "type": "ip",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      }
    }
  }
}

错误:

> {   "error": {
>     "root_cause": [
>       {
>         "type": "resource_already_exists_exception",
>         "reason": "index [test_ip/xBXNCAjnRjODoAAY3TGFBA] already exists",
>         "index_uuid": "xBXNCAjnRjODoAAY3TGFBA",
>         "index": "test_ip"
>       }
>     ],
>     "type": "resource_already_exists_exception",
>     "reason": "index [test_ip/xBXNCAjnRjODoAAY3TGFBA] already exists",
>     "index_uuid": "xBXNCAjnRjODoAAY3TGFBA",
>     "index": "test_ip"   },
>.    "status": 400 }
ndasle7k

ndasle7k2#

TLDR:需要在创建Map后刷新索引。
使用动态Map规则动态创建Map。当第一个对象通过时,将创建新的Map。此信息不会立即在Kibana中显示。创建Map后,您可能必须刷新索引,以便在构建可视化时填充新字段。

相关问题