在Elasticsearch中,为什么会收到错误消息“默认情况下在文本字段上禁用字段数据”

问题描述 投票:0回答:1

我正在尝试编写一个查询来返回独特的城市。我的代码是:

GET /files/_doc/_search
{
  "size":"0",
  "aggs" : {
    "uniq_cities" : {
      "terms" : { "field" : "cities" }

    }
  }
}

我有一个错误消息如下:

默认情况下,在文本字段上禁用Fielddata。在[cities]上设置fielddata = true,以便通过反转索引来加载内存中的fielddata。请注意,这可能会占用大量内存。或者,也可以使用关键字字段。

我跑的时候

GET /files/_doc/_mapping

我明白了:

"cities" : {
  "type" : "text",
  "fields" : {
    "keyword" : {
      "type" : "keyword",
      "ignore_above" : 256
    }
  }
}

基于以上所述,我似乎已经有了一个关键字字段。如何修复错误消息?

elasticsearch
1个回答
2
投票

错误显示“默认情况下在文本字段上禁用Fielddata”,因为您尝试在文本字段cities上应用聚合。它还有一个子字段keyword,其数据类型为keyword。因此,在cities.keyword字段上应用聚合如下:

GET /files/_doc/_search
{
  "size":"0",
  "aggs" : {
    "uniq_cities" : {
      "terms" : { "field" : "cities.keyword" }

    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.