首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在弹性搜索中计算平均最小次数?

如何在弹性搜索中计算平均最小次数?
EN

Stack Overflow用户
提问于 2017-08-08 09:58:17
回答 2查看 145关注 0票数 0

使用Elasticsearch版本为5.4.2

我想构建一个Elasticsearch查询来满足三个条件。

  1. championId滤波器
  2. 每次游戏都要花最少的时间购买各种物品。
  3. 计算每个游戏中购买每件物品的最小时间。

我做了1和2。但是我找不到解决3。在查询中可以执行1到3吗?以防万一,我将在PHP框架之一Laravel5.4上使用结果。

我的数据格式如下:

代码语言:javascript
运行
复制
"_index": "timelines",
"_type": "timeline"
"_source": {
      "gameId": 152735348,
      "participantId": 3,
      "championId": 35,
      "role": "NONE",
      "lane": "JUNGLE",
      "win": 1,
      "itemId": 1036,
      "timestamp": 571200
}

我当前的Elasticsearch查询是这样的

代码语言:javascript
运行
复制
GET timelines/_search?size=0&pretty
{
  "query": {
    "bool": {
      "must": [
        { "match": { "championId":  22 }}
      ]
    }
  },
  "aggs": {
   "games": {
     "terms": {
       "field": "gameId"
     },
     "aggs": {
       "items": {
         "terms": {
           "field": "itemId",
           "order" : { "min_buying_time" : "asc" }
         },
         "aggs": {
           "min_buying_time": {
             "min": {
               "field": "timestamp"
             }
           }
         }
       }
     }
   }
  }
}
EN

Stack Overflow用户

发布于 2017-08-08 11:18:38

正如@S nke Liebau所说,管道聚合是关键,但是如果您想要计算每个项目的所有游戏的平均最短时间,您应该首先通过itemID进行聚合。以下代码应该会有所帮助:

代码语言:javascript
运行
复制
POST misko/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "championId":  22 }}
      ]
    }
  },
  "aggs": {
    "items": {
      "terms": {
       "field": "itemId"
     },
     "aggs": {
       "games": {
         "terms": {
           "field": "gameId"
         },
         "aggs": {
           "min_buying_time": {
             "min": {
               "field": "timestamp"
             }
           }
         }
       },
       "avg_min_time": {
         "avg_bucket": {
           "buckets_path": "games>min_buying_time"
         }
       }
     }
   }
  }
}
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45565227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档