elasticsearch脚本编写:如何在直方图

时间:2016-07-28 08:41:47

标签: elasticsearch

使用elasticsearch 2.3.3

我有 date_histogram ,里面有bucket_script。在脚本中,我想在当前存储桶上使用一些聚合(没有问题),但在前一个存储桶上也使用聚合。我没有看到任何方法来访问脚本中的其他存储桶。

我错过了什么或是不可能吗?

这是我的问题:

curl -XPOST "http://$ESHOST:$ESPORT/$INDEX_NAME/_search?pretty" -d '
{
    "size": 0, 
    "aggs" : {
        "s_price" : {
            "date_histogram" : {
                "field" : "a_date",
                "interval" : "month",
                "format" : "yyyy-MM"
            },
            "aggs" : {
                "median_price": { "percentiles": { "field": "s_price", "percents": [50] } },
                "median_price_change": { "derivative": { "buckets_path": "median_price.50" }},
                "median_percent_change": {
                    "bucket_script": {
                        "gap_policy" : "insert_zeros",
                        "buckets_path": {
                          "price_change": "median_price_change",
                          "price_abs": "median_price.50"
                        },
                        "script": "price_change / price_abs * 100"
                    }
                }
            }
        }
    }
}'

而不是 price_abs 指向当前的存储区值,我希望它指向前一个存储区值。

感谢

1 个答案:

答案 0 :(得分:0)

(发现这个搜索同样的问题。它已经老了,但是没有找到其他地方的答案,所以回答其他人通过搜索来到这里)

你有你需要的东西来计算"衍生物"聚合:

"script": "price_change / (price_change - price_abs) * 100"

延迟为1的串行差分将使得与导数相同。