美文网首页es
ElasticSearch基本语法-聚合分析

ElasticSearch基本语法-聚合分析

作者: Haohao_95 | 来源:发表于2018-07-04 18:54 被阅读41次

    聚合操作

    1. 分组

    GET /index/type/_search
    {
      "aggs": {                  //表示聚合分析操作
        "group_by_tags": {       //任意取的名字
          "terms": {             //选择aggs的种类,即分组
            "field": "tags"      //指定field
          }
        }
      }
    }
    

    最终根据tags得出每组的数量

    2. 搜索+聚合

    GET /index/type/_search
    {
      "size" : 0,
      "query": {
        "match": {
          "name" : "element"
        }
      },
      "aggs": {
        "group_by_tags": {
          "terms": {
            "field":"tags"
          }
        }
      }
    }
    

    就是简单的先搜索后聚合

    3.先分组,再算每组的平均值

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

    用一种聚合嵌套的方式来实现。首先以tags分组,分组之后在使用aggs来计算每个组的价格平均值。

    4. 排序需求

    按照tags分组,并显示每一组的平均价格。之后组的排序按照avg_price降序排列。

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

    这种语法即在分组语句中加入order选项即可。

    5.按照价格区间分组,每组内按照tags分组。最后计算每组的平均价格。

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

    相关文章

      网友评论

        本文标题:ElasticSearch基本语法-聚合分析

        本文链接:https://www.haomeiwen.com/subject/lrxeuftx.html