美文网首页
Metrics Aggregations

Metrics Aggregations

作者: ZplD | 来源:发表于2019-06-26 15:25 被阅读0次

Aggregations

Metrics Aggregations

  • Avg Aggregation

    作用:计算出字段平均值

 GET tutuapp_android_view_log_2019.05.26/_search
 {
   "size":0,
   "query": {
     "term": {
       "entity_id": {
         "value": "3061402"
       }
     }
   },
 "aggs":{
       "123":{
         "avg": {
           "field": "version_code"
         }
       }
     }
 }

#使用脚本

GET tutuapp_android_view_log_2019.05.26/_search
{
 "size":0,
 "query": {
   "term": {
     "entity_id": {
       "value": "3061402"
     }
   }
 },
"aggs":{
     "123":{
       "avg": {
         "script": {
           "source":"doc.version_code.value"
         }
       }
     }
   }
}

  • Weighted Avg Aggregation
    作用:算出加权平均值,公式为∑(value * weight) / ∑(weight)
 POST /exams/_search
{
   "size": 0,
   "aggs" : {
       "weighted_grade": {
           "weighted_avg": {
               "value": {
                   "field": "grade"
               },
               "weight": {
                   "field": "weight"
               }
           }
       }
   }
}
  • Cardinality Aggregation
    作用:计算字段的去重后的总数如sql中的distinct
GET tutuapp_android_view_log_2019.05.26/_search
{
  "size":0,
  "query": {
    "term": {
      "entity_id": {
        "value": "3061402"
      }
    }
  },
"aggs":{
      "123":{
        "cardinality": {
          "field": "allneed_lang"
        }
      }
    }
}

# 添加date_histogram可以指定单位时间里面的去重总数
GET tutuapp_android_view_log_2019.05.26/_search
{
  "size":0,
  "query": {
    "term": {
      "entity_id": {
        "value": "3061402"
      }
    }
  },
"aggs":{
      "months" : {
        "date_histogram": {
          "field": "dateTime",
          "interval": "day"
        },
      "aggs":{
        "123":{
        "cardinality": {
          "field": "allneed_lang"
        }
      }
      }
    }
}
}
  • Extended Stats Aggregation
    作用:获取字段的数量,最大最小值,平均值,总和,平方差,标准差等
GET tutuapp_android_view_log_2019.05.26/_search
{
  "size":0,
  "query": {
    "term": {
      "entity_id": {
        "value": "3061402"
      }
    }
  },
"aggs":{
      "123":{
        "extended_stats": {
          "field": "version_code"
        }
      }
    }
}

  • Geo Bounds Aggregation
    作用:地理位置搜索,用于对经纬度的距离搜索,有四种过滤器分别是:
    geo_distance: 查找距离某个中心点距离在一定范围内的位置
    geo_bounding_box: 查找某个长方形区域内的位置
    geo_distance_range: 查找距离某个中心的距离在min和max之间的位置
    geo_polygon: 查找位于多边形内的地点
# 数据
{"city": "Beijing", "state": "BJ","location": {"lat": "39.91667", "lon": "116.41667"}}

{"city": "Shanghai", "state": "SH","location": {"lat": "34.50000", "lon": "121.43333"}}

{"city": "Xiamen", "state": "FJ","location": {"lat": "24.46667", "lon": "118.10000"}}

{"city": "Fuzhou", "state": "FJ","location": {"lat": "26.08333", "lon": "119.30000"}}

{"city": "Guangzhou", "state": "GD","location": {"lat": "23.16667", "lon": "113.23333"}}
# 搜索距离厦门500KM的数据
{
    "query":{
        "filtered":{
          "filter":{
            "geo_distance" : {
                "distance" : "500km",
                "location" : {
                    "lat" : 24.46667,
                    "lon" : 118.10000
                }            }        }    }    }
  • Max Aggregation,Min Aggregation
    作用:获取字段的最小值或最大值
GET tutuapp_android_view_log_2019.05.26/_search
{
  "size":0,
  "query": {
    "term": {
      "entity_id": {
        "value": "3061402"
      }
    }
  },
"aggs":{
      "123":{
        "max": {
          "field": "version_code"
        }
      }
    }
}
  • Percentiles Aggregation
    作用:求百分位数,分别获得1, 5, 25, 50, 75, 95, 99分位数
GET tutuapp_android_view_log_2019.05.26/_search
{
  "size":0,
  "query": {
    "term": {
      "entity_id": {
        "value": "3061402"
      }
    }
  },
"aggs":{
      "123":{
        "percentiles": {
          "field": "dateTime"
        }
      }
    }
}
  • Percentile Ranks Aggregation
    作用:计算某字段,在某个范围内的占比
GET tutuapp_android_view_log_2019.05.26/_search
{
  "size":0,
  "query": {
    "term": {
      "entity_id": {
        "value": "3061402"
      }
    }
  },
"aggs":{
      "123":{
        "percentile_ranks": {
          "field": "dateTime",
          "values": [1558848262552.2058,1558914598806.6667]
        }
      }
    }
}

#计算时间在values内的两个数值内的占比
  • Scripted Metric Aggregation
    作用:自定义聚合,通过抒写js代码,分别为init_script,map_script,combine_script,reduce_script赋值
#数据
{"index":{"_id":1}}
{"type": "sale","amount": 80}
{"index":{"_id":2}}
{"type": "cost","amount": 10}
{"index":{"_id":3}}
{"type": "cost","amount": 30}
{"index":{"_id":4}}
{"type": "sale","amount": 130}
#搜索,计算盈利
{
    "aggs": {
        "profit": {
            "scripted_metric": {
                "init_script" : {
                    "id": "my_init_script"
                },
                "map_script" : {
                    "id": "my_map_script"
                },
                "combine_script" : {
                    "id": "my_combine_script"
                },
                "params": {
                    "field": "amount" 
                },
                "reduce_script" : {
                    "id": "my_reduce_script"
                }
            }
        }
    }
}{
    "query" : {
        "match_all" : {}
    },
    "aggs": {
        "profit": {
            "scripted_metric": {
                "init_script" : "state.transactions = []", 
                "map_script" : "state.transactions.add(doc.type.value == 'sale' ? doc.amount.value : -1 * doc.amount.value)",
                "combine_script" : "double profit = 0; for (t in state.transactions) { profit += t } return profit",
                "reduce_script" : "double profit = 0; for (a in states) { profit += a } return profit"
            }
        }
    }
}

  • Stats Aggregation
    作用:获取该字段的个数,最小最大值,平均值,和总和
GET tutuapp_android_view_log_2019.05.26/_search
{
  "size":0,
  "query": {
    "term": {
      "entity_id": {
        "value": "3061402"
      }
    }
  },
"aggs":{
      "123":{
        "stats": {
          "field": "version_code"
        }
      }
    }
}
  • Sum Aggregation
    作用:获取字段数值总和
GET tutuapp_android_view_log_2019.05.26/_search
{
  "size":0,
  "query": {
    "term": {
      "entity_id": {
        "value": "3061402"
      }
    }
  },
"aggs":{
      "123":{
        "sum": {
          "field": "version_code"
        }
      }
    }
}
  • Top Hits Aggregation
    作用:对每组进行筛选
GET tutuapp_android_view_log_2019.05.26/_search
{
  "size":0,
  "query": {
    "term": {
      "entity_id": {
        "value": "3061402"
      }
    }
  },
"aggs":{
      "123":{
        "terms": {
          "field": "entity_id"
        },
        "aggs": {
          "456": {
            "top_hits": {
              "sort": [
                {
                  "dateTime": {
                    "order": "desc" #根据时间进行排序
                  }
                }
                ],
                "_source": {
                  "includes": ["allneed_lang","countryCode"]#需要显示的数据
                }
            }
          }
        }
      }
    }
}
  • Value Count Aggregation
    作用:计算字段总数
GET tutuapp_android_view_log_2019.05.26/_search
{
  "size":0,
  "query": {
    "term": {
      "entity_id": {
        "value": "3061402"
      }
    }
  },
"aggs":{
      "123":{
        "value_count": {
          "field": "version_code"
        }
      }
    }
}

相关文章

网友评论

      本文标题:Metrics Aggregations

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