我想在彈性搜索中形成一個嵌套的聚合型別查詢。基本上,嵌套聚合分為四個級別。
groupId.keyword ---方向 --billingCallType --durationCallAnswered
例子:
"aggregations": {
"avgCallDuration": {
"terms": {
"field": "groupId.keyword",
"size": 10000,
"min_doc_count": 1,
"shard_min_doc_count": 0,
"show_term_doc_count_error": false,
"order": [
{
"_count": "desc"
},
{
"_key": "asc"
}
]
},
"aggregations": {
"call_direction": {
"terms" : {
"field": "direction"
},
"aggregations": {
"call_type" : {
"terms": {
"field": "billingCallType"
},
"aggregations": {
"avg_value": {
"terms": {
"field": "durationCallAnswered"
}
}
}
}
}
}
}
}
}
這是查詢的一部分。運行此程式時,我收到錯誤為
“type”:“illegal_argument_exception”,
“reason”:“文本欄位未針對需要每個檔案欄位資料的操作(如聚合和排序)進行優化,因此默認情況下禁用這些操作。請改用關鍵字欄位。或者,在 [direction] 上設定 fielddata=true,以便通過反轉倒排索引來加載欄位資料。請注意,這可能會占用大量記憶體。”
任何人都可以對此有所了解嗎?
uj5u.com熱心網友回復:
特長;
作為錯誤狀態,您正在對文本欄位 field 執行聚合direction。
默認情況下,文本欄位不支持聚合,因為它非常昂貴(cpu 和記憶體方面)。
它們是您問題的 3 個解決方案,
- 將映射從文本更改為關鍵字(需要重新索引,查詢資料的最有效方式)
- 更改映射以添加到此欄位
fielddata: true(靈活,但未優化) - 不要在此欄位上進行聚合:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/513906.html
