elasticsearch - 汇总中位数/平均值查询

标签 elasticsearch aggregate

我有一个索引,其类型可以简化为:

{
  'date': DATE_STRING,
  'owner': INT,
  'color: 'red' | 'purple' | 'blue'
}

并且希望进行查询以显示以下数据,其中所有者的值等于他们拥有的“蓝色”项目总数减去所请求时间内“红色”的项目总数(唐不要问为什么):
  • 任何所有者的最小值(在请求的时间内)
  • 任何所有者的最大值(在请求的时间内)
  • 所有所有者的平均值(在请求的时间内)
  • 所有所有者的中值(在请求的时间内)
  • 特定所有者的值(在请求的时间内)
  • 最佳答案

    设置索引:

    PUT colorful
    {
      "mappings": {
        "properties": {
          "date": {
            "type": "date"
          },
          "owner": {
            "type": "integer"
          },
          "color": {
            "type": "keyword"
          }
        }
      }
    }
    

    插入一些文档
    POST colorful/_doc
    {"date":"2020-05-28T19:56:12.237Z","owner":131351351,"color":"red"}
    
    POST colorful/_doc
    {"date":"2020-04-28T19:58:02.110Z","owner":35135125,"color":"purple"}
    
    POST colorful/_doc
    {"date":"2020-05-15T19:58:15.966Z","owner":997654341,"color":"blue"}
    
    POST colorful/_doc
    {"date":"2020-05-21T19:58:35.766Z","owner":366449,"color":"red"}
    

    按日期范围和总计过滤。可以使用stats来计算Min,Max,Avg(= Mean),对于median则是percentiles[50]。不确定a particular owner's value是什么意思,但是可以使用top_hits来获取实际的范围过滤文档,还可以为特定文档添加过滤器。
    GET colorful/_search
    {
      "size": 0,
      "query": {
        "range": {
          "date": {
            "gte": "now-3M",
            "lte": "now-1h"
          }
        }
      },
      "aggs": {
        "1)general_stats": {
          "stats": {
            "field": "owner"
          }
        },
        "2)median": {
          "percentiles": {
            "field": "owner",
            "percents": [
              50
            ]
          }
        },
        "3)top_hits": {
          "top_hits": {
            "size": 10
          }
        }
      }
    }
    

    关于elasticsearch - 汇总中位数/平均值查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62070326/

    相关文章:

    ios - 使用新的 Firebase 在 Heroku 上为 ElasticSearch 设置手电筒

    r - 根据另一个变量选择分组行

    r - 根据另一列中的常见值聚合 R 中列值的所有可能组合

    elasticsearch - 带有嵌套和非嵌套子句的Elasticsearch Bool查询

    elasticsearch - 在Elasticsearch中将 “keyword”更新为索引的 “text”字段类型以进行不精确的单词匹配

    elasticsearch - 如何确定Elasticsearch中每个索引使用的RAM?

    python使用默认函数聚合groupby

    .net - Linq 的聚合函数,如何制作 CSV 字符串

    java - 降低数据集的粒度

    spring-boot - Spring Boot +休眠搜索:必需的索引状态被忽略?