1. 程式人生 > >第三篇 elasticsearch的group by+avg+sort等聚合分析

第三篇 elasticsearch的group by+avg+sort等聚合分析

本文依據如下資料模板進行分析

PUT /ecommerce/product/1
{
    "name" : "gaolujie yagao",
    "desc" :  "gaoxiao meibai",
    "price" :  30,
    "producer" :      "gaolujie producer",
    "tags": [ "meibai", "fangzhu" ]
}

需求一:計算每個tag下的商品資料

GET /ecommerce/product/_search
{
  "aggs": {//聚合函式
    "group_by_tags": {//該名稱可以隨便起
"terms": { "field": "tags" } } } }

第一次執行此程式碼會報錯,原因是field使用時要將fielddata屬性設定為true,此屬性左右後面在進行講解:

PUT /ecommerce/_mapping/product
{
  "properties": {
    "tags": {
      "type": "text",
      "fielddata": true
    }
  }
}

需求二:對名稱中包含yagao的商品,計算每個tag下的商品數量

GET /ecommerce/product/_search
{
  "query"
: { "match": { "name": "yagao" } }, "aggs": { "all_tags": { "terms": { "field": "tags" } } } }

需求三:先分組,再算每組的平均值,計算每個tag下的商品的平均價格

GET /ecommerce/product/_search
{
    "size": 0,
    "aggs" : {
        "group_by_tags" : {
            "terms" : { "field"
: "tags" }, "aggs" : { "avg_price" : { "avg" : { "field" : "price" } } } } } }

需求四:計算每個tag下的商品平均價格,並且按照平均價格降序排序


GET /ecommerce/product/_search
{
    "aggs" : {
        "all_tags" : {
            "terms" : { "field" : "tags", "order": { "avg_price": "desc" } },
            "aggs" : {
                "avg_price" : {
                    "avg" : { "field" : "price" }
                }
            }
        }
    }
}

需求五:按照指定的價格範圍區間進行分組,然後在每組內再按照tag進行分組,最後再計算每組的平均價格

GET /ecommerce/product/_search
{
  "aggs": {
    "group_by_price": {
      "range": {
        "field": "price",
        "ranges": [
          {
            "from": 0,
            "to": 20
          },
          {
            "from": 20,
            "to": 40
          },
          {
            "from": 40,
            "to": 50
          }
        ]
      },
      "aggs": {
        "group_by_tags": {
          "terms": {
            "field": "tags"
          },
          "aggs": {
            "average_price": {
              "avg": {
                "field": "price"
              }
            }
          }
        }
      }
    }
  }
}

相關推薦

elasticsearch的group by+avg+sort聚合分析

本文依據如下資料模板進行分析 PUT /ecommerce/product/1 { "name" : "gaolujie yagao", "desc" : "gaoxiao meibai", "price" : 30,

mongodb.driver 2.4.4 c# 去重 distinct group by

// 實現sql查詢如:select name from table group by name//mongodb 實現db.company.distinct("origin_labels",{company_name:/^Arrow/}) //根據模糊查詢結果去重// c#

實例講解webpack的基本使用

ont conf logs .config 結合 pac sta 現在 fig 這一篇來講解一下webpack的htmlWebpackHtml插件的使用。 先來思考一個實際問題:我們現在在index.html引用的js文件是寫死的。但是我們每次打包後的文件都是動態的,那麽

linux設備驅動:寫一個簡單的字符設備驅動

提示 copy flags 驅動程序 相關 clas open ugo param 在linux設備驅動第一篇:設備驅動程序簡介中簡單介紹了字符驅動,本篇簡單介紹如何寫一個簡單的字符設備驅動。本篇借鑒LDD中的源碼,實現一個與硬件設備無關的字符設備驅動,僅僅操

Python基礎:函數

turn 說明 代碼 名稱 維護 span 大小寫 div 邏輯 一、Python函數介紹 1.函數的作用 規範代碼使代碼變得邏輯性更強 提高可讀性,方便管理,降低維護成本,以及降低代碼冗余 函數是組織好的,可重復使用的,用來實現單一,或相關聯功能的代碼段。 2.函

python之路

區別 英語 utf-8 系統 存在 創建 tel run 變量名 python文件目錄操作 python中對文件、文件夾(文件操作函數)的操作需要涉及到os模塊和shutil模塊。 得到當前工作目錄,即當前Python腳本工作的目錄路

:爬蟲框架 - Scrapy

工程 講解 爬取 turn 本體 爬蟲框架 sel 傳遞 使用 前言 Python提供了一個比較實用的爬蟲框架 - Scrapy。在這個框架下只要定制好指定的幾個模塊,就能實現一個爬蟲。 本文將講解Scrapy框架的基本體系結構,以及使用這

:數據可視化 - ggplot2

strong 保存 轉換成 特征 散點圖 說明 pdf格式 ota 目的 前言 R語言的強大之處在於統計和作圖。其中統計部分的內容很多很強大,因此會在以後的實例中逐步介紹;而作圖部分的套路相對來說是比較固定的,現在可以先對它做一個總體的認識。

:開發中的問題及解決方式

.text cat 彈窗 ret 如何 配置 中項 新的 顯示 1.texarea 如何保存空格、換行? 答:var content1= $("#content").val(); var content =content1.replace(/\n|\r\n/g,"&

Shell:基本語法

允許 主體 賦值 算數 export $* lar script userdel 目錄 一、什麽是shell script 二、變量 三、運算符 四、流程控制 五、函數   一、什麽是shell script   將OS命令堆積到可執行文件裏,由上至下的順序執行文本裏的

Cocos2d-x 3.4 之 消滅星星 > (終) <

周期 ack ini 顏色 博客 ec2 width pri mp3格式 ***************************************轉載請註明出處:http://blog.csdn.net/lttree************************

【滲透課程】-體驗http協議的應用

load 簡單介紹 class 發送數據 數據交互 動手實驗 服務端 yun 屬於 之前我們都了解了,訪問網頁時,客戶端與服務端之間的請求與響應數據交互。本篇就淺談它的應用。 利用HTTP攔截突破前段驗證 比方說,我們在某個網頁提交某些數據(例如留言、上傳、插入xss等)

Linux實戰:RHEL7.3 yum更換實戰

yum個人筆記分享(在線閱讀):http://note.youdao.com/noteshare?id=cdae09cf51bf77a4e94a2e2865562dbbPDF版本下載http://down.51cto.com/data/2323064本文出自 “人才雞雞” 博客,請務必保留此出處http://

英漢翻譯

to do ica geo dispose ons 美國 學院 pos college Man proposes, God disposes. To do as God disposes the American College of Surgeons 美國外科醫生學會

python學習【】基本數據類型

ini ati 絕對值 ef6 ict trunc any 替換 不包含 Number(數字) int(整型)   在32位機器上,整數的位數為32位,取值範圍為-2**31~2**31-1,即-2147483648~2147483647  在64位系統上,整數的位數為6

:python函數

名稱 bsp 一行 turn 內置 提高 none def 簡單 1、python函數 函數是組織好的,可重復使用的,用來實現單一,或相關聯功能的代碼段。 函數能提高應用的模塊性,和代碼的重復利用率。你已經知道Python提供了許多內建函數,比如print()。但你也可

.python 編碼的轉換

utf-8 python3 python2 第三篇 pytho pan span 需要 enc !/usr/bin/python2# -*- coding:utf-8 -*-temp = "豬"#解碼,需要指定原來是什麽編碼,解碼成Unicodetemp_unicode =

關於AJAX

數據 大量數據 更新 使用 pos 包含 send spa 限制 AJAX - 向服務器發送請求 XMLHttpRequest 對象用於和服務器交換數據。 向服務器發送請求 如需將請求發送到服務器,我們使用 XMLHttpRequest 對象的 open() 和 send(

】ASP.NET MVC快速入門之安全策略(MVC5+EF6)

對象 code word 單身 script ticket bsp 金額 class 【第一篇】ASP.NET MVC快速入門之數據庫操作(MVC5+EF6) 【第二篇】ASP.NET MVC快速入門之數據註解(MVC5+EF6) 【第三篇】ASP.NET MVC快速入門之

數據結構——線性表的鏈式存儲之單鏈表

創建 int 超出 內容 存儲結構 cat com style 找到   線性表的鏈式存儲結構的特點是用一組任意的存儲單元來存儲線性表的數據元素,這些單元可以分散在內存中的任意位置上,其在物理上可以是連續的,也可以是不連續的。具有鏈式存儲結構的線性表稱為線性鏈表。   為了