elasticsearch - 如何在Elasticsearch中使用汇总值计算平均值?

标签 elasticsearch

如果这只是文档的一小部分,

{ "metricName" : "call", "createdDate" : "2019-10-31T00:00:00.000Z", "responseCode: "200" }
{ "metricName" : "email", "createdDate" : "2019-10-31T00:00:00.000Z", "responseCode: "400" }
{ "metricName" : "chat", "createdDate" : "2019-10-31T00:00:00.000Z", "responseCode: "300" }
.
.

我需要在一个查询中执行以下操作。
  • 该查询应允许我根据createdDate,responseCode和metricName过滤记录。
  • 结果需要按metricName和createdDate分组。
  • 另外,还需要提取每个组的记录计数。
  • 我需要根据在同一实例(对于给定的createdDate)创建的记录,找到包含特定responseCode的记录的平均值。
  • 最佳答案

    聚合API允许使用子聚合按多个字段进行分组。假设要按字段field1,field2和field3分组:

    通过此查询可以解决您的1,2和3个问题。

    POST /stackoverflow/_search?size=0
    {
        "query": {
            "bool": {
                "must": [
                    {
                        "match_phrase": {
                            "createdDate": {
                                "query": "2019-10-31T00:00:00.000Z",
                                "slop": 0,
                                "zero_terms_query": "NONE",
                                "boost": 1
                            }
                        }
                    },
                    {
                        "match_phrase": {
                            "responseCode": {
                                "query": "200",
                                "slop": 0,
                                "zero_terms_query": "NONE",
                                "boost": 1
                            }
                        }
                    },
                    {
                        "match_phrase": {
                            "metricName": {
                                "query": "call",
                                "slop": 0,
                                "zero_terms_query": "NONE",
                                "boost": 1
                            }
                        }
                    }
                ]
            }
        },
        "aggr": {
            "agg1": {
                "terms": {
                    "field": "metricName",
                    "size": 10,
                    "order": [
                        {
                            "_count": "desc"
                        },
                        {
                            "_key": "asc"
                        }
                    ]
                }
            },
            "aggs": {
                "agg2": {
                    "terms": {
                        "field": "createdDate",
                        "size": 10,
                        "order": [
                            {
                                "_count": "desc"
                            },
                            {
                                "_key": "asc"
                            }
                        ]
                    }
                }
            }
        }
    }
    

    关于elasticsearch - 如何在Elasticsearch中使用汇总值计算平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58622894/

    相关文章:

    elasticsearch - 用于改善单元测试的 elasticsearch 启动时间的设置?

    elasticsearch - 如何使用From/Size控制Elasticsearch聚合结果?

    elasticsearch - 运行搜寻器时收到 fatal error

    authentication - ElasticSearch:是否有任何应用程序可以启用对ElasticSearch的访问管理?

    elasticsearch - Elasticsearch助力,但每个字段仅出现一次术语

    ruby - 如何从 ElasticSearch 结果集中排除带有 ids 的数组?

    elasticsearch - mget 生成 : Unable to parse response body for Response

    dynamic - 在Elasticsearch中关闭了动态映射,但是自定义映射仍然不起作用?

    java - EnableElasticSearchRepositories 异常

    json - Elasticsearch搜索模板