elasticsearch,aggregation,facet,Filter,elasticsearch,Aggregation,Facet" /> elasticsearch,aggregation,facet,Filter,elasticsearch,Aggregation,Facet" />

Filter 弹性搜索查询-如何对结果进行分组并对结果执行操作

Filter 弹性搜索查询-如何对结果进行分组并对结果执行操作,filter,elasticsearch,aggregation,facet,Filter,elasticsearch,Aggregation,Facet,我对弹性搜索非常陌生。因此,在弹性搜索中编写用例查询时需要帮助 我们有一个场景,需要对查询结果执行操作,还需要对数据进行一些分组。 例如,考虑下面的样本用例。 文档包含如下字段和值: documentId : 1284che3t3bdf2 playerName : John playerId : 123456 timestamp : X milliseconds (long value) status : START_SPRINT documentId : 45645bf6cxf3674 pl

我对弹性搜索非常陌生。因此,在弹性搜索中编写用例查询时需要帮助

我们有一个场景,需要对查询结果执行操作,还需要对数据进行一些分组。 例如,考虑下面的样本用例。

文档包含如下字段和值:

documentId : 1284che3t3bdf2
playerName : John
playerId : 123456
timestamp : X milliseconds (long value)
status : START_SPRINT

documentId : 45645bf6cxf3674
playerName : John
playerId : 123456
timestamp : Y milliseconds (long value)
status : END_SPRINT
现在我们必须找回球员约翰完成冲刺所花费的时间

也就是说,我们需要得到时间差(Y-X) 玩家名称:约翰

我们还需要所有玩家完成冲刺所需的平均时间。 通过查看文档,我们可以使用聚合和过滤器来实现这一点

如果您有任何查询方面的帮助或编写这些查询的指针,我们将不胜感激

到目前为止,可以使用脚本化度量聚合编写以下查询:


这与MapReduce有什么关系?到目前为止,您尝试了什么?到目前为止,我能够用术语编写一个方面查询。已开始尝试使用度量聚合进行查询。请使用您编写的方面查询进行更新!更新了上面我可以写的查询。我现在遇到了一些解析错误,希望我的方向是正确的。请告诉我,你是在跟我开玩笑吧?您刚刚复制了示例并粘贴到这里!
    {
        "query" : {
            "match_all" : {}
        },
        "aggs": {
            "average": {
                "scripted_metric": {
                    "init_script" : "_agg['timestamps'] = []",
                    "map_script" : "if (doc['status'].value == \"END\") {      
                                      _agg.timestamps.add(doc.timestamp.value) 
                                    } else {
                                     _agg.timestamps.add(-1 * doc.timestamp.value) }",
                    "combine_script" : "total = 0;
                                        average = 0;
                                        for (t in _agg.timestamps) { total += t }; 
                                        average = total/_agg.timestamps.length;
                                       return average",
                    "reduce_script" : "average = 0; 
                                      for (a in _aggs) { average += a }; 
                                      return average"
            }
        }
    }
}