1. 程式人生 > >es的巢狀聚合、巢狀分析、下鑽分析案例學習之Elasticsearch 07

es的巢狀聚合、巢狀分析、下鑽分析案例學習之Elasticsearch 07

es的restful api在學習和理解es的所欲知識點和功能點:

1、es最重要的api,讓我們進行各種嘗試、學習甚至在某些環境下進行使用的api,就是restful api。如果你學習不用es restful api,比如我上來就用java api來學習es,也是可以的,但是你根本就漏掉了es知識的一大塊,你都不知道它最重要的restful api是怎麼用的

2、學習用esrestful api,更加方便,快捷,不用每次都寫大量的java程式碼,能加快關注es本身的知識和功能的學習

第一個分析需求

計算每個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

    }

  }

}

設定後顯示

{

  "acknowledged": true

}

GET/ecommerce/product/_search

{

  "size": 0,

  "aggs": {

    "all_tags": {

      "terms": { "field":"tags" }

    }

  }

}

{

  "took": 20,

  "timed_out": false,

  "_shards": {

    "total": 5,

    "successful": 5,

    "failed": 0

  },

  "hits": {

    "total": 4,

    "max_score": 0,

    "hits": []

  },

  "aggregations": {

    "group_by_tags": {

      "doc_count_error_upper_bound":0,

      "sum_other_doc_count": 0,

      "buckets": [

        {

          "key": "fangzhu",

          "doc_count": 2

        },

        {

          "key": "meibai",

          "doc_count": 2

        },

        {

          "key": "qingxin",

          "doc_count": 1

        }

      ]

    }

  }

}

第二個聚合分析的需求

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

GET/ecommerce/product/_search

{

  "size": 0,

  "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" }

                }

            }

        }

    }

}

{

  "took": 8,

  "timed_out": false,

  "_shards": {

    "total": 5,

    "successful": 5,

    "failed": 0

  },

  "hits": {

    "total": 4,

    "max_score": 0,

    "hits": []

  },

  "aggregations": {

    "group_by_tags": {

      "doc_count_error_upper_bound":0,

      "sum_other_doc_count": 0,

      "buckets": [

        {

          "key": "fangzhu",

          "doc_count": 2,

          "avg_price": {

            "value": 27.5

          }

        },

        {

          "key": "meibai",

          "doc_count": 2,

          "avg_price": {

            "value": 40

          }

        },

        {

          "key": "qingxin",

          "doc_count": 1,

          "avg_price": {

            "value": 40

          }

        }

      ]

    }

  }

}

第四個資料分析需求

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

GET/ecommerce/product/_search

{

    "size": 0,

    "aggs" : {

        "all_tags" : {

            "terms" : {"field" : "tags", "order": {"avg_price": "desc" } },

            "aggs" : {

                "avg_price" : {

                    "avg" : {"field" : "price" }

                }

            }

        }

    }

}

console輸出顯示:

{

  "took": 3,

  "timed_out": false,

  "_shards": {

    "total": 5,

    "successful": 5,

    "failed": 0

  },

  "hits": {

    "total": 5,

    "max_score": 0,

    "hits": []

  },

  "aggregations": {

    "group_by_tags": {

      "doc_count_error_upper_bound":0,

      "sum_other_doc_count": 0,

      "buckets": [

        {

          "key":"hanghaishi",

          "doc_count": 1,

          "avg_price": {

            "value": 2200000000

          }

        },

        {

          "key": "qingxin",

          "doc_count": 1,

          "avg_price": {

            "value": 40

          }

        },

        {

          "key": "meibai",

          "doc_count": 1,

          "avg_price": {

            "value": 30

          }

        },

        {

          "key": "fangzhu",

          "doc_count": 2,

          "avg_price": {

            "value": 27.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": {

            "avg_price": {

              "avg": {

                "field":"price"

              }

            }

          }

        }

      }

    }

  }

}

console輸出顯示:

{

  "took": 9,

  "timed_out": false,

  "_shards": {

    "total": 5,

    "successful": 5,

    "failed": 0

  },

  "hits": {

    "total": 5,

    "max_score": 0,

    "hits": []

  },

  "aggregations": {

    "group_by_price": {

      "buckets": [

        {

          "key":"0.0-20.0",

          "from": 0,

          "to": 20,

          "doc_count": 0,

          "group_by_tags": {

           "doc_count_error_upper_bound": 0,

            "sum_other_doc_count": 0,

            "buckets": []

          }

        },

        {

          "key":"20.0-40.0",

          "from": 20,

          "to": 40,

          "doc_count": 2,

          "group_by_tags": {

           "doc_count_error_upper_bound": 0,

            "sum_other_doc_count": 0,

            "buckets": [

              {

                "key":"fangzhu",

                "doc_count": 2,

                "avg_price": {

                  "value": 27.5

                }

              },

              {

                "key":"meibai",

                "doc_count": 1,

                "avg_price": {

                  "value": 30

                }

              }

            ]

          }

        },

        {

          "key":"40.0-50.0",

          "from": 40,

          "to": 50,

          "doc_count": 1,

          "group_by_tags": {

           "doc_count_error_upper_bound": 0,

            "sum_other_doc_count": 0,

            "buckets": [

              {

                "key":"qingxin",

                "doc_count": 1,

                "avg_price": {

                  "value": 40

                }

              }

            ]

          }

        }

      ]

    }

  }

}

相關推薦

es聚合分析分析案例學習Elasticsearch 07

es的restful api在學習和理解es的所欲知識點和功能點: 1、es最重要的api,讓我們進行各種嘗試、學習甚至在某些環境下進行使用的api,就是restful api。如果你學習不用es restful api,比如我上來就用java api來學習es,也是可以的,但是你根本就漏掉了es知識的

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

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

07.聚合分析聚合分析

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

ElasticSearch——聚合分析聚合分析

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

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

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

45_ElasticSearch 顏色+品牌分析時按最深層metric進行排序

顏色+品牌下鑽分析時按最深層metric進行排序需求說明對品牌下鑽的分析結果進行排序aggs -> aggs -> order1、查詢GET /tvs/sales/_search { "size": 0, "aggs": { "group_by_

資料分析轉向資料探勘的學習

/* Java 日期時間 java.util 包提供了 Date 類來封裝當前的日期和時間。 Date 類提供兩個建構函式來例項化 Date 物件。 date()/date(long,millis

RecyclerView 和 ListView 使用對比分析(佈局API滾動機制)

空資料處理 ListView 提供了 setEmptyView 這個 API 來讓我們處理 Adapter 中資料為空的情況,只需輕輕一 set 就能搞定一切。程式碼設定和效果如下 mListView = (ListView) findViewById(R.id.listview);

elasticsearch elk最全java api 搜尋 聚合查詢

一、 一般查詢... 2 (一) matchAllQuery(client). 2 (二) matchQu

C#程式設計基礎第四課2:使用if語句if-else語句多重if語句if語句完成的C#控制檯小程式

知識點:基本算術運算、簡單if語句、if-else語句的練習。利用語句完成簡單C#控制檯程式。 1、運用if-else語句,判斷使用者輸入的年份是否是閏年 static void Main(string[] args) { /*

C#程式設計基礎第四課:c#中的邏輯運算子多重if語句if語句的使用

知識點:邏輯運算子、多重if語句、巢狀if語句 1、邏輯運算子 練習1:邏輯或、邏輯與運算子的使用 本次計算機考試成績規定:筆試成績等於100分且機試成績大於等於60分,或筆試成績大於等於60分且機試成績等於100分,     輸出“成績優秀”,&

Mysql 聚合函式使用

目的:Mysql 聚合函式巢狀使用 聚合函式不可以直接巢狀使用,比如: max(count(*)) 但是可以巢狀子查詢使用  eg:  注:後面那個 as 必須要寫 select max(total) from ( select count(*) as to

python的list的基本操作list迴圈切片字典基本操作字典字串常用方法

上面說了字串和整形,那現在要是想存一個班級的人的名字,這個班有200個人,怎麼存呢,用字串的話,那就是names = 'marry lily king .....'這樣,但是這樣存是可以存,那要是想取到某個人的名字怎麼取呢,不能再去裡面看一遍吧,那累死人了,為了解決這個問題,又有一種新的資料型別應運而生,那就

Python - 函式基礎概念 - 三種形式引數名稱空間

目錄 一、函式的三種形式 1-1 語句形式 - foo() 1-2 表示式形式 - 3*len('hello') 1-3 引數形式 - range(len('hello')) 二、 形參 and 實參 2-1 位置引數 - 實參和形參位置上一一對

Scala ---- while迴圈for迴圈增強for迴圈for迴圈

3.5. 迴圈 A)、while (條件語句){程式碼塊} B)、do{程式碼塊}while(條件語句)   C)、for迴圈語法結構:for (i <- 表示式/陣列/集合) 1、簡單for迴圈   &n

函式物件函式名稱空間與作用域閉包函式裝飾器

一.函式物件 函式時第一類物件,函式可以當作資料傳遞 1.函式可以被引用 2.函式可以作為引數傳入 3.函式可以作為函式的返回值 4.函式可以作為容器型別的元素 二.函式巢狀 1.函式巢狀呼叫:在函式內又呼叫了其他函式 2.函式巢狀定義:在函式內又定義了其他函式(只能在其函式內部呼叫,在其函式

python函式呼叫順序高階函式函式閉包詳解

  一:函式呼叫順序:其他高階語言類似,Python 不允許在函式未宣告之前,對其進行引用或者呼叫錯誤示範: def foo(): print 'in the foo' bar() foo() 報錯: in the foo Traceback (most re

webview中html實現精準定位(百度地圖高德地圖騰訊地圖H5原生定位)js對比

最近在實現一個功能,就是在安卓手機和蘋果手機嵌入html程式碼,實現精準定位,我為此對比幾種定位的方法。我要的是精準定位,就是誤差在100米左右的功能,類似與外賣app那種定位精確度 1. 首先是原生h5定位 if(browser.versions.an

VUE學習筆記(三)-子路由多路由路由動態路由都是什麼鬼?

最近學習到VUE路由這塊,發現這塊知識點有點多,好容易混亂,我的學習習慣就是先要建立框架,然後再去挨個學習搞懂,所以先來把概念搞搞清楚再說。 首先,我們要知道VUE路由建立的是單頁面路由。 子路由其實和單路由意思是一樣的,單路由應該很好理解,因為我們都知道路由是可以一層一層巢狀的,你可以

HTML表格———表格題目位置摺疊邊框隔行增色跨行跨列表格

建立基本表格 <table> <caption>這是一個表格</caption> <tr> <th>a</th> <th>b</th&g