我正在尝试编写一个查询来返回独特的城市。我的代码是:
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
}
}
}
基于以上所述,我似乎已经有了一个关键字字段。如何修复错误消息?
错误显示“默认情况下在文本字段上禁用Fielddata”,因为您尝试在文本字段cities
上应用聚合。它还有一个子字段keyword
,其数据类型为keyword
。因此,在cities.keyword
字段上应用聚合如下:
GET /files/_doc/_search
{
"size":"0",
"aggs" : {
"uniq_cities" : {
"terms" : { "field" : "cities.keyword" }
}
}
}