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

时间:2019-03-02 04:31:29

标签: elasticsearch

我正在尝试编写查询以返回唯一城市。我的代码是:

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

    }
  }
}

我收到如下错误消息:

  

默认情况下,在文本字段上禁用字段数据。将fielddata = true设置为on   [城市]以便通过以下方式将字段数据加载到内存中   反转倒排索引。请注意,这可以使用   大量的记忆。或者,也可以使用关键字字段。

我跑步时

GET /files/_doc/_mapping

我得到:

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

基于上述内容,看来我已经有一个关键字字段。如何解决错误消息?

1 个答案:

答案 0 :(得分:2)

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

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

    }
  }
}