ES-聚合操作


  • 所謂 聚合,就是在查詢完某些數據之后,進行 group by 等操作,並進行一系列的統計
  • 基本語法如下:
POST /index/_search
{
    "size":0,
    "query":{
        "match_all":{

        }
    },
    "aggs":{
        "group_by_model":{
            "terms":{
                "field":"red"
            }
        }
    }
}

  • 以下是對以上的參數的解釋:
  • size:不查詢任何數據,因為聚合操作主要是為了統計,查詢數據並沒有意義
  • match_all:查詢所有
  • group_by_model:相當於給 count(*) 起一個別名
  • field:根據哪個字段聚合

統計每個type下的文檔數量

  • 對應的 SQL 語句:select type,count(*) from artuicle group by type
POST /index/_search
{
    "query":{
        "match_all":{

        }
    },
    "size":0,
    "aggs":{
        "types_count":{
            "terms":{
                "field":"types"
            }
        }
    }
}

統計閱讀量大於100的文檔數量

POST /index/_search
{
    "query":{
        "range":{
            "red":{
                "gt":100
            }
        }
    },
    "size":0,
    "aggs":{
        "types_count":{
            "terms":{
                "field":"types"
            }
        }
    }
}

  • 除了統計數量以外,es 還支持 最大值最小值平均值總和 等操作
  • 分別對應着 max、min、avg、sum,只需要把上面的 terms 換成這些關鍵字即可

bucket和metric

  • bucket:數據的分組
班級 姓名
一年級 BNTang
一年級 李四
二年級 王五
二年級 趙六
二年級 田七
  • 划分出來兩個 bucket,一個一年級,一個是二年級
  • 一年級 bucket:包含了 2 個人,BNTang,李四
  • 二年級 bucket:包含了 3 個人,王五,趙六,田七
  • metric:對數據分組執行的統計,比如說 最大值最小值總數平均值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM