尝试在文本字段上启用Fielddate

时间:2017-06-09 21:48:15

标签: elasticsearch

每次执行涉及文本字段的聚合命令时,都会收到错误消息,说我需要在textfields上启用Fielddate。这是我正在执行的查询:

progbar

我得到的官方错误是:

GET customers/external/_search
{
  "aggs": {
    "group_by_date": {
      "terms": {
        "field": "city"
      }
    }
  }
}

所以我尝试通过执行此查询来启用Fielddata:

"type": "illegal_argument_exception",
"reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [city] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory."

之后,我尝试执行聚合查询,但仍然显示相同的错误消息。然后我尝试执行此查询:

PUT customers/external/text
{
  "properties": {
    "city": { 
      "type":     "text",
      "fielddata": true
    }
  }
}

然后我执行聚合查询,但它仍然显示相同的消息。我做错了什么?

1 个答案:

答案 0 :(得分:1)

启用字段数据的查询对我来说是错误的。我创建了一个包含GET customers/external/_mapping调用的最小示例来检查实际映射:

PUT customers/external/1
{
  "city": "San Francisco"
}
PUT customers/external/2
{
  "city": "San Antonio"
}
GET customers/external/_mapping
PUT customers/_mapping/external
{
  "properties": {
    "city": { 
      "type":     "text",
      "fielddata": true
    }
  }
}
GET customers/external/_mapping
GET customers/external/_search
{
  "aggs": {
    "group_by_date": {
      "terms": {
        "field": "city"
      }
    }
  }
}
DELETE customers

但这个例子也说明了为什么你可能不想这样做 - 你有两个点击" san"这没有多大意义。查看文档为什么您可能想要use a keyword for this functionality