1. 程式人生 > >【Mark】elasticsearch 聚合結果被分詞處理方案

【Mark】elasticsearch 聚合結果被分詞處理方案

最近群裡很多問關於es的聚合結果被分詞的問題,這裡統一解答。

es聚合被分詞的現象一般是6.x版本的(以前的版本沒用過)

es6.x後對於text型別欄位需要聚合查詢(類似group by)對資料進行統計分析,需要設定fielddata為true 和fields欄位才能進行聚合操作。

例:text型別欄位進行聚合查詢(count(*) group by)  摘自:https://www.cnblogs.com/dxf813/p/8447467.html 

需求:對機構欄位既可以進行模糊查詢,又可以按照欄位全名進行聚合統計

實現:

-設定欄位引數

複製程式碼
 "institution": {
              "type
": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_max_word", "fielddata" : true, "fields": {"raw": {"type": "keyword"}}#如果不設定keyword索引在聚合時將會使用已分解後的詞。例如:想用“國泰君安”聚合,結果使用“國泰”,“君安”聚合 }
複製程式碼

-查詢時aggs引數

複製程式碼
    body = {
            "query
": { "range": { "time": { "gte": '2018-02-01' } } }, "aggs": { "institution_count": { "terms": {"field": "institution.raw
"},#使用keyword分組 "aggs": {         }         }         } }