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