国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Elasticsearch實戰(zhàn)(十五)---查詢query,filter過濾,結合aggs 進行局部/全局聚合統計

這篇具有很好參考價值的文章主要介紹了Elasticsearch實戰(zhàn)(十五)---查詢query,filter過濾,結合aggs 進行局部/全局聚合統計。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Elasticsearch實戰(zhàn)-查詢query,filter過濾,結合aggs 進行局部/全局聚合統計

1.準備數據
POST /testcopy/_bulk
{"index":{"_id": 1}}
{"empId" : "111","name" : "員工1","age" : 20,"sex" : "男","mobile" : "19000001111","salary":1333,"deptName" : "技術部","provice" : "湖北省","city":"武漢","area":"光谷大道","address":"湖北省武漢市洪山區(qū)光谷大廈","content" : "i like to write best elasticsearch article"}
{"index":{"_id": 2}}
{"empId" : "222","name" : "員工2","age" : 25,"sex" : "男","mobile" : "19000002222","salary":15963,"deptName" : "銷售部","provice" : "湖北省","city":"武漢","area":"江漢區(qū)","address" : "湖北省武漢市江漢路","content" : "i think java is the best programming language"}
{"index":{"_id": 3}}
{ "empId" : "333","name" : "員工3","age" : 30,"sex" : "男","mobile" : "19000003333","salary":20000,"deptName" : "技術部","provice" : "湖北省","city":"武漢","area":"經濟技術開發(fā)區(qū)","address" : "湖北省武漢市經濟開發(fā)區(qū)","content" : "i am only an elasticsearch beginner"}
{"index":{"_id": 4}}
{"empId" : "444","name" : "員工4","age" : 20,"sex" : "女","mobile" : "19000004444","salary":5600,"deptName" : "銷售部","provice" : "湖北省","city":"武漢","area":"沌口開發(fā)區(qū)","address" : "湖北省武漢市沌口開發(fā)區(qū)","content" : "elasticsearch and hadoop are all very good solution, i am a beginner"}
{"index":{"_id": 5}}
{ "empId" : "555","name" : "員工5","age" : 20,"sex" : "男","mobile" : "19000005555","salary":9665,"deptName" : "測試部","provice" : "湖北省","city":"高新開發(fā)區(qū)","area":"武漢","address" : "湖北省武漢市東湖隧道","content" : "spark is best big data solution based on scala ,an programming language similar to java"}
{"index":{"_id": 6}}
{"empId" : "666","name" : "員工6","age" : 30,"sex" : "女","mobile" : "19000006666","salary":30000,"deptName" : "技術部","provice" : "武漢市","city":"湖北省","area":"江漢區(qū)","address" : "湖北省武漢市江漢路","content" : "i like java developer"}
{"index":{"_id": 7}}
{"empId" : "777","name" : "員工7","age" : 60,"sex" : "女","mobile" : "19000007777","salary":52130,"deptName" : "測試部","provice" : "湖北省","city":"黃岡市","area":"邊城區(qū)","address" : "湖北省黃岡市邊城區(qū)","content" : "i like elasticsearch developer"}
{"index":{"_id": 8}}
{"empId" : "888","name" : "員工8","age" : 19,"sex" : "女","mobile" : "19000008888","salary":60000,"deptName" : "技術部","provice" : "湖北省","city":"武漢","area":"漢陽區(qū)","address" : "湖北省武漢市江漢大學","content" : "i like spark language"}
{"index":{"_id": 9}}
{"empId" : "999","name" : "員工9","age" : 40,"sex" : "男","mobile" : "19000009999","salary":23000,"deptName" : "銷售部","provice" : "河南省","city":"鄭州市","area":"二七區(qū)","address" : "河南省鄭州市鄭州大學","content" : "i like java developer"}
{"index":{"_id": 10}}
{"empId" : "101010","name" : "張湖北","age" : 35,"sex" : "男","mobile" : "19000001010","salary":18000,"deptName" : "測試部","provice" : "湖北省","city":"武漢","area":"高新開發(fā)區(qū)","address" : "湖北省武漢市東湖高新","content" : "i like java developer i also like  elasticsearch"}
{"index":{"_id": 11}}
{"empId" : "111111","name" : "王河南","age" : 61,"sex" : "男","mobile" : "19000001011","salary":10000,"deptName" : "銷售部",,"provice" : "河南省","city":"開封市","area":"金明區(qū)","address" : "河南省開封市河南大學","content" : "i am not like  java "}
{"index":{"_id": 12}}
{"empId" : "121212","name" : "張大學","age" : 26,"sex" : "女","mobile" : "19000001012","salary":1321,"deptName" : "測試部",,"provice" : "河南省","city":"開封市","area":"金明區(qū)","address" : "河南省開封市河南大學","content" : "i am java developer  thing java is good"}
{"index":{"_id": 13}}
{"empId" : "131313","name" : "李江漢","age" : 36,"sex" : "男","mobile" : "19000001013","salary":1125,"deptName" : "銷售部","provice" : "河南省","city":"鄭州市","area":"二七區(qū)","address" : "河南省鄭州市二七區(qū)","content" : "i like java and java is very best i like it do you like java "}
{"index":{"_id": 14}}
{"empId" : "141414","name" : "王技術","age" : 45,"sex" : "女","mobile" : "19000001014","salary":6222,"deptName" : "測試部",,"provice" : "河南省","city":"鄭州市","area":"金水區(qū)","address" : "河南省鄭州市金水區(qū)","content" : "i like c++"}
{"index":{"_id": 15}}
{"empId" : "151515","name" : "張測試","age" : 18,"sex" : "男","mobile" : "19000001015","salary":20000,"deptName" : "技術部",,"provice" : "河南省","city":"鄭州市","area":"高新開發(fā)區(qū)","address" : "河南省鄭州高新開發(fā)區(qū)","content" : "i think spark is good"}
2. ES 查詢query,filter過濾,結合aggs 聚合統計
2.1 查詢命中后,基于查詢的數據進行聚合

前面我們講的所有的聚合操作 都是沒有查詢的,都是上來直接 aggs 進行 聚合 avg, count, 如果現在我想統計 技術部的人 的平均年齡該如何實現?
實現 某個部門(技術部)的平均年齡的統計,先查詢然后基于查詢結果進行統計 技術部最大年齡,最小年齡,平均年齡

#query先查詢,然后基于查詢結果進行統計 max , min, avg
get /testcopy/_search
{
  "query":{
    "match_phrase": {
      "deptName.keyword": "技術部"
    }
  },
  //基于 query平級,進行aggs聚合操作,就是用query結果進行aggs聚合統計
  "aggs":{
    "tech_avg_age":{
      "avg": {
        "field": "age"
      }
    },
    "max_age":{
      "max": {
        "field": "age"
      }
    },
    "min_age":{
      "min": {
        "field": "age"
      }
    }
  }
}

查詢結果 四個技術部員工, 是再查詢出來這四個員工的 基礎上 再次進行的統計分析
技術部 max age:30, min age:19, avg age:24.75
Elasticsearch實戰(zhàn)(十五)---查詢query,filter過濾,結合aggs 進行局部/全局聚合統計

2.2 基于 filter 過濾后,基于此數據進行聚合

上面我們講了 基于 query的數據 進行 aggs 統計分析, 那是否能和 filter 結合來進行過濾呢? 當然可以!

實現 過濾 年齡在 (25,60)之間的人, 然后 基于這部分數據進行 平均年齡的統計

# 過濾 filter 過濾 25-40的人,然后 基于過濾結果進行統計  avg
get /testcopy/_search
{
  "query":{
    "bool": {
      "filter": [
        {
          "range": {
            "age": {
              "gte": 25,
              "lte": 40
            }
          }
        }
      ]
    }
  },
  "aggs":{
    "avg_age":{
      "avg": {
        "field": "age"
      }
    }
  }
}


查詢過濾 結果 6個技術部員工, 基于過濾基礎之上 再次進行的統計分析, 得出平均年齡 32.66
Elasticsearch實戰(zhàn)(十五)---查詢query,filter過濾,結合aggs 進行局部/全局聚合統計

2.3 基于查詢query, filter 綜合過濾后,基于此數據進行聚合

上面我們講了 基于 query的數據 進行 aggs 統計分析, 那是否能和 filter 結合來進行過濾呢? 基于 查詢, 過濾后的數據進行統計分析 能否可行?
當然可以!

實現 查詢 技術部 過濾 年齡在 (25,60)之間的 :武漢的 然后 基于這部分數據進行 平均年齡的統計

#query先查詢,然后 filter 過濾 25-60的人,然后 基于查詢過濾結果進行統計  avg
get /testcopy/_search
{
  "query":{
    "bool": {
      "must": [
        {
          "match": {
            "deptName.keyword": "技術部"
          }
        }
      ],
      //must 平級 進行filter 過濾
      "filter": [
        {
          "range": {
            "age": {
              "gte": 25,
              "lte": 60
            }
          }
        }
      ]
    }
  },
  //query 結束, 平級 基于query查詢過濾結果 進行 aggs
  "aggs":{
    "avg_age":{
      "avg": {
        "field": "age"
      }
    }
  }
}

查詢過濾 結果 2個技術部員工, 基于基礎之上 再次進行的統計分析, 得出平均年齡 30
Elasticsearch實戰(zhàn)(十五)---查詢query,filter過濾,結合aggs 進行局部/全局聚合統計

3 Global bucket 全局bucket統計
3.1 局部bucket統計與全局global bucket統計

比如 現在 我想 部門的平均年齡和 所有整個公司的人的平均年齡的 來做對比,應該如何實現?分兩次查詢先查部門,然后查全部么,最后再做對比? 太麻煩了

  • 不是這樣子的,ES提供了 global參數 來控制 全局統計, global定義了一個全局桶bucket
  • Global 忽略查詢條件, 直接對所有document 數據進行統計
    場景:
    實現 某個部門的平均年齡和整個doc的平均年齡 的統計
#global:{} 在aggs 的分組名字內部, 就是忽略上面的查詢條件, 進行全局統計
get /testcopy/_search
{
  "size":0,
  "query":{
    "match": {
      "deptName.keyword": "技術部"
    }
  },
  "aggs":{
    "tech_avg":{
      "avg": {
        "field": "age"
      }
    },
    //aggs內部 tech_avg 平級 進行全局統計 global bucket
    "all_avg_age":{
      "global": {},
      "aggs": {
        "all_of_age": {
          "avg": {
            "field": "age"
          }
        }
      }
    }
  }
}

查詢結果 global 統計了11個doc, 然后 平均年齡30.45
單個技術部 有 4條數據doc,平均年齡是 24.75
Elasticsearch實戰(zhàn)(十五)---查詢query,filter過濾,結合aggs 進行局部/全局聚合統計


至此 我們已經學習了 查詢query,filter過濾,結合aggs 進行局部/全局聚合統計的基本用法,實現了 查詢 query, filter過濾 及 融合aggs進行統計分析,及對比 局部/全局 global aggs 聚合統計, 下一篇,我們介紹下 TOP N 排名推薦文章來源地址http://www.zghlxwxcb.cn/news/detail-497612.html

到了這里,關于Elasticsearch實戰(zhàn)(十五)---查詢query,filter過濾,結合aggs 進行局部/全局聚合統計的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【ES專題】ElasticSearch 高級查詢語法Query DSL實戰(zhàn)

    【ES專題】ElasticSearch 高級查詢語法Query DSL實戰(zhàn)

    個人在學習的過程中,感覺比較吃力的地方有如下: 語法結構比較陌生 沒有中文文檔, 只能看英文 其他博客也比較少介紹語法結構。比如說,為什么查詢中會出現 query 有ES入門基礎,且想進一步學習ES基本操作的朋友 系列上一篇文章:《【ES專題】ElasticSearch快速入

    2024年02月06日
    瀏覽(24)
  • Elasticsearch Boolean Query查詢介紹

    前言 ES 和 Solr 的底層都是基于Apache Lucene 實現,bool 查詢的底層實現是Lucene 的 BooleanQuery,其可以組合多個子句查詢,類似 SQL 語句里面的 OR 查詢。 查詢介紹 在 ES 里面 Boolean 查詢封裝了 4 種 API 接口能力,可以單獨使用,也可以組合使用,總結如下: 函數 描述 must query 關鍵

    2024年02月13日
    瀏覽(45)
  • ElasticSearch Index查詢(Query DSL)

    先貼一個Query DSL的官方文檔:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html 我平時喜歡查看官方文檔,了解數據查詢和存儲方面的性能優(yōu)化點,下面是積累的腳本分享。 查詢語句格式 查詢類型:match_all,match,term,range,fuzzy,bool 等等 查詢條件:查詢條件會根

    2024年02月07日
    瀏覽(23)
  • Elasticsearch復合查詢之Boosting Query

    Elasticsearch復合查詢之Boosting Query

    前言 ES 里面有 5 種復合查詢,分別是: Boolean Query Boosting Query Constant Score Query Disjunction Max Query Function Score Query Boolean Query在之前已經介紹過了,今天來看一下 Boosting Query 用法,其實也非常簡單,總結起來就一句話,對不期待的查詢進行相關性降分。 Boost 加權機制底層

    2024年02月12日
    瀏覽(16)
  • ElasticSearch級查詢Query DSL上

    ElasticSearch級查詢Query DSL上

    目錄 ES高級查詢Query DSL match_all 返回源數據_source 返回指定條數size 分頁查詢fromsize 指定字段排序sort 術語級別查詢 Term query術語查詢 Terms Query多術語查詢 exists query ids query range query范圍查詢 prefix query前綴查詢 wildcard query通配符查詢 fuzzy query模糊查詢 ? ? ? ?ES中提供了一種強大

    2024年02月20日
    瀏覽(28)
  • Elasticsearch 基本使用(五)查詢條件匹配方式(query & query_string)

    Elasticsearch 基本使用(五)查詢條件匹配方式(query & query_string)

    ES中常用的查詢類型往大了分可以分為簡單查詢,復合查詢,聚合查詢等; 而復合查詢及聚合查詢都是基于簡單查詢的;簡單查詢里面對條件的匹配方式又分為不同類型。term[s],match,match_all,match_phrase 等等 term 單詞查詢,在字段的倒排索引(發(fā)生分詞)或者直接在字段值(

    2024年02月09日
    瀏覽(25)
  • Elasticsearch 查詢之Function Score Query

    Elasticsearch 查詢之Function Score Query

    前言 ES 的主查詢評分模式分為兩種,是信息檢索領域的重要算法: TF-IDF 算法 和 BM25 算法。 Elasticsearch 從版本 5.0 開始引入了 BM25 算法作為默認的文檔評分(relevance scoring)算法。在此之前,Elasticsearch 使用的是 TF-IDF 算法作為默認的文檔評分算法。從版本 5.0 起,BM25 算法取代

    2024年02月12日
    瀏覽(25)
  • 【ElasticSearch系列-03】ElasticSearch的高級句法查詢Query DSL

    【ElasticSearch系列-03】ElasticSearch的高級句法查詢Query DSL

    ElasticSearch系列整體欄目 內容 鏈接地址 【一】ElasticSearch下載和安裝 https://zhenghuisheng.blog.csdn.net/article/details/129260827 【二】ElasticSearch概念和基本操作 https://blog.csdn.net/zhenghuishengq/article/details/134121631 【二】ElasticSearch的高級查詢Query DSL https://blog.csdn.net/zhenghuishengq/article/details/1

    2024年02月06日
    瀏覽(29)
  • Elasticsearch:使用 query_string 查詢的短語及模糊查詢

    在我之前的文章系列里,我詳細描述了 query_string 的一些功能: Elasticsearch: query_string 查詢 Elasticsearch:以更簡單的方式編寫具有邏輯條件的 Elasticsearch 查詢 - query_string Elasticsearch:理解 query_string 和 simple_query_string 查詢 在今天的文章中,我們來聊聊 query_string 中的一下特殊查詢

    2024年02月09日
    瀏覽(19)
  • Elasticsearch:使用查詢規(guī)則(query rules)進行搜索

    Elasticsearch:使用查詢規(guī)則(query rules)進行搜索

    在之前的文章 “Elasticsearch 8.10 中引入查詢規(guī)則 - query rules”,我們詳述了如何使用 query rules 來進行搜索。這個交互式筆記本將向你介紹如何使用官方 Elasticsearch Python 客戶端來使用查詢規(guī)則。 你將使用 query rules API 將查詢規(guī)則存儲在 Elasticsearch 中,并使用 rule_query 查詢它們。

    2024年02月21日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包