1. 程式人生 > >ElasticSearch之——巢狀聚合,下鑽分析,聚合分析

ElasticSearch之——巢狀聚合,下鑽分析,聚合分析

1、第一個分析需求

計算每個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
    }
  }
}
GET /ecommerce/product/_search
{
  "size": 0,
  "aggs": {
    "all_tags": {
      "terms": { "field": "tags" }
    }
  }
}

2、第二個聚合分析的需求

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

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

3、第三個聚合分析的需求

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

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

4、第四個資料分析需求

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

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

5、第五個資料分析需求

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

GET /ecommerce/product/_search
{
  "size": 0,
  "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——聚合分析聚合分析

1、第一個分析需求計算每個tag下的商品數量GET /ecommerce/product/_search { "aggs": { "group_by_tags": { "terms": { "field": "tags" } } } }將文

ElasticSearch教程——kibana聚合分析聚合分析

兩個核心概念:bucket和metric city name 北京 小李 北京 小王 上海 小張 上海 小麗 上海 小陳 基於city劃分buckets 劃分出來兩個bucket,一個是北京bucket,一個是上海bucket 北京bucket:包含了2個人,小

快速入門案例實戰電商網站商品管理:聚合分析聚合分析

第一個分析需求:計算每個tag下的商品數量 GET /ecommerce/product/_search {   "aggs": {     "group_by_tags": {       "terms": { "field": "tags" }     }   } }

07.聚合分析聚合分析

聚合分析(group by + avg + sort) 第一個分析需求:計算每個tag下的商品數量 GET /ecommerce/product/_search { “aggs”: { “group_by_tags”: { “terms”: { “field”: “tags” } } } }

Kotlin程式設計內部類匿名內部類

Kotlin程式設計相關知識點介紹: 和Java程式設計類似,在Kotlin程式設計也有巢狀類和內部類,及匿名內部類。 開始編寫一個案例,來了解這三者,程式碼如下: package com

迴圈取多層的JsonArray中的值最後一層可以是JsonArray也可以是jsonObject

/** * @param jsonStr json字串 * @param key 具體取值上一級對應的所有的 Key * @param value 具體取值對應的所有的key * @param type type 是最後一個key對應的是array還是jsonObject

block的資料繫結問題block時序問題

做過幾個專案以後,會用到比較深層次的block,開始學習階段block都是通過mvc方式寫,不會涉及到block時序問題,也不會有資料來源繫結問題,因為controller不會被釋放,你的資料都寫在controller層。邁向大神的階段就需要多用block封裝view,資料只是在controller

mybatis查詢association和collection

Mybatis association是用於一對一和多對一,而collection是用於一對多的關係 一. Association 1. 巢狀查詢實現association一對一 public class Card implements Serializable{ private In

java遺珠

使用內部類的原因 1.合乎只在一個地方備用的邏輯: 如果一個類僅僅被一個別的類使用,那麼把這個類嵌入到使用它的類中非常符合邏輯,巢狀這樣的幫助類是的package變得簡潔。 2.有益於封裝: 如果兩個類A和B,如果B需要訪問A定義為private的成員,那

路由之間的傳值go(-1)並同時傳參

巢狀路由子路由向父路由傳值方式就是父子元件之間的傳值方式,即使用emit。 如果是想看go(-1)的同時傳值,直接到文末 假設現在有路由如下: A是父路由,BC是子路由 { path: '/A', name: 'A', compone

fastjson-1.2.21 使用例項複雜Java物件轉json物件複雜json物件轉對應Java物件的程式碼實現

理論我就不多廢話了,直接看程式碼吧。使用的是fastjson-1.2.21版本的來實現下面程式碼的。 主要是實現複雜的巢狀的Java物件,也就是物件巢狀物件的複雜物件,轉換成json字串。然後就是反過來,把複雜的json字串轉換成對應的巢狀的Java物件。 先上工具類。如下

MySQL查詢優化連線

  原文地址:https://dev.mysql.com/doc/refman/5.7/en/nested-join-optimization.html 譯文: 8.2.1.7巢狀連線優化 連線的語法允許巢狀連線。下面討論中涉及到的連線語法可以參考Section 

圖解Oracle 表連線優化迴圈連線(Nested loops join)

當一條SQL語句引用多張表連線時,Oracle的查詢優化器(Optimizer)不僅要確定每張表的訪問路徑,而且需要確定這些表的連線順序和連線方法。查詢優化器的目標是通過儘早地過濾不需要的資料,減少需要處理的資料量。 Oracle的SQL優化器(Optimizer)在執行

Recyclerview列表item橫向Gridview 解決滑動衝突資料載入問題

recyclerview列表資料,每個item 巢狀橫向滑動GridView的問題, 這幾天新需求,列表載入使用者關注的人物,一頁15條資料,,,,,,。然後每個人物 都有自己的一系列作品,要在人物頭像之後 ,放一個可以橫著滑動,又支援分頁載入的橫向列表。 剛開始覺得挺容

d3元件的運用(單選框拉列表滑動軸多選)

目錄 目錄 單選框 下拉列表 滑動軸 多選框 單選框 1.前端 <form name="myForm" action="" method="" style="posit

XRecyclerViewrecyclerview佈局拉卡頓問題

android:descendantFocusability="blocksDescendants" 解決方案是從github上另一個下拉重新整理的recyclerview控制元件裡找到的,這裡貼一下連結 https://github.com/jdsjlzx/LRecyc

02_Weblogic課程安裝篇:RedHatJDK安裝RedHatWeblogic安裝目錄結構環境變數設定

 1Weblogic的安裝方式有三種: 一、GUI方式安裝(java –jar wls1035_generic.jar [-mode=gui])這是預設的 二、Consol

Java介面詳解(附原始碼)

package com.mufeng.theninthchapter; class A { interface B { void f(); } public class BImp implements B { @Override public void f() { // TODO

Angular-ui-router進階二檢視與多個檢視組合使用

ui-router巢狀檢視 巢狀檢視是ui-router不同於ng-route的最大區別之一,也是ui-router受到大眾青睞的主要原因。接下來跟小編直接上手做一下簡單的巢狀檢視(Nested Views)。 上面是本次示例的佈局,有導航欄、側邊欄、檢視1及其子孫檢

python 踩坑系列列表建立

1.初始化列表及修改     初始化列表有很多方法,其中之一可以通過*來初始化: a = [[]]*3 print a >>> [[], [], []] 通過這個方法獲取了一個包含三個空list的巢狀列表,下面對這個列表進行修改: a[0].appe