最近公司做電商項目,需要用到搜索引擎,選擇的elasticsearch做站內搜索,其中聚合統計商品分類的時候遇到聚合結果被分詞的現象特定記錄一下:
es聚合被分詞的現象一般是6.x版本的(以前的版本沒用過)
es6.x後對於text類型字段需要聚合查詢(類似group by)對數據進行統計分析,需要設置fielddata爲true 和fields字段才能進行聚合操作。並且將fields的type設置爲keywords
字段索引結構
"categoryName": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word",
"fielddata" : true,
"fields": {"raw": {"type": "keyword"}}#如果不設置keyword索引在聚合時將會使用已分解後的詞
}
查詢時候請求參數
body = {
"query": {
"range": {
"time": {
"gte": '2018-02-01'
}
}
},
"aggs": {
"institution_count": {
"terms": {"field": "categoryName.raw"},#使用keyword分組
"aggs": {
}
}
}
}