ElasticSearch:获取存储桶内的桶密钥scripted_metric

时间:2017-10-11 01:04:02

标签: elasticsearch

我正在尝试在elasticsearch中运行此查询。我试图在我的桶上运行自定义scripted_metric聚合。在度量标准脚本中,我希望能够访问聚合在其上的存储桶密钥。

ES中的文档看起来像这样。

{
    user_id: 5,
    data: {
        5: 200,
        8: 300
    }
},
{
    user_id: 8,
    data: {
        5: 889,
        8: 22
    }
}

我的聚合查询如下所示:

aggs = {
    approvers: {
        terms: {
            field: 'user_id'
        },
        aggs: {
            new_metric: {
                scripted_metric: {
                    map_script: `
                        // IS IT POSSIBLE TO GET THE BUCKET KEY HERE?
                        // The bucket key here would be the user_id
                        // so i can do stuff like

                        doc['data'][**_term**]....
                    `
                }
            }
        }
}

1 个答案:

答案 0 :(得分:0)

我不得不进行一些挖掘,并且可能遇到与查找如何检索父值的解决方案相同的难度......我唯一能找到的就是关于特殊的“_count”值子聚合,但与其父桶名称/密钥无关。

如果使用带有scripted_metric的子聚合并不是一个严格的要求,我能够找到一种方法,允许您至少访问父母中的桶密钥。也许这可以帮助您开始解决方案:

aggs = {
    approvers: {
        terms: {
            field: 'user_id',
            script: '"There seems to be a magic value here: " + _value'
        }
}

样本改编自this