Процентная фильтрация elasti c поиск - PullRequest
1 голос
/ 13 февраля 2020

Я пытаюсь вычислить 15-й и 75-й процентили на агрегированном поле с измененным значением (задержка) -> и пытаюсь получить эти записи со значением поля> (p75-p15). Я могу рассчитать агг и пороги, но не могу отфильтровать требуемые значения. Пробовал приведенный ниже запрос, и я работаю в "buckets_path должен ссылаться либо на числовое значение, либо на единичное значение цифра c метри c агрегация, получено: java .lang.Object []". Я просто пытаюсь получить записи со средней задержкой> порог. Есть указатели?

"aggs": {
        "by_name": {
            "terms": {
                "script": "doc['name'].value + ',' + doc['valf'].value ,
                "size": 5000
            },
            "aggs": {
                "single_round_block": {
                    "date_histogram": {
                        "field": "start_time",
                        "interval": "300s"
                    },
                    "aggs": {
                        "overallSumLatency": {
                            "sum": {
                                "field": "sum_latency_ms"
                            }
                        },
                        "overallNumLatencyMeasurements": {
                            "sum": {
                                "field": "num_valid_latency_measurements"
                            }
                        },

                           "avgLatency": {
                            "bucket_script": {
                                "buckets_path": {
                                    "sumLatency": "overallSumLatency",
                                    "numPoints": "overallNumLatencyMeasurements"
                                },
                                "script": "(params.numPoints == 0)?0:(params.sumLatency / params.numPoints)"
                            }
                        }
                    }
                },
                "percentiles_vals": {
            "percentiles_bucket": {
                "buckets_path": "single_round_block>avgLatency",
                "percents": [ 15.0,75.0] 
            }
        },

        "threshold":{
          "bucket_script": {
            "buckets_path": {
              "perc75":"percentiles_vals[75.0]",
              "perc15":"percentiles_vals[15.0]"
            },
            "script": "Math.abs(params.perc75 - params.perc15)"
          }

        },
                "filter_out_records": {
                    "bucket_selector": {
                        "buckets_path": {
                            "threshold":"threshold",
                            "avgLatency":"single_round_block>avgLatency"
                        },
                        "script": "params.avgLatency > params.threshold"
                    }
                }
            }
        }
    }
}
...