每次执行涉及文本字段的聚合命令时,都会收到错误消息,说我需要在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
}
}
}
然后我执行聚合查询,但它仍然显示相同的消息。我做错了什么?
答案 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。