Como executar uma agregação de pipeline sem retornar todos os buckets no Elasticsearch

Estou usando o Elasticsearch 2.3 e estou tentando executar uma computação em duas etapas usando uma agregação de pipeline. Estou interessado apenas no resultado final da agregação de meu pipeline, mas o Elasticsearch retorna todas as informações de buckets.

Como tenho um grande número de baldes (dezenas ou centenas de milhões), isso é proibitivo. Infelizmente, não consigo encontrar uma maneira de dizer a Es para não retornar todas essas informações.

Aqui está um exemplo de brinquedo. Eu tenho um índicetest-index com um tipo de documentoobj. obj tem dois campos,key evalues.

curl -XPOST 'http://10.10.0.7:9200/test-index/obj' -d '{
  "value": 100,
  "key": "foo"
}'

curl -XPOST 'http://10.10.0.7:9200/test-index/obj' -d '{
  "value": 20,
  "key": "foo"
}'

curl -XPOST 'http://10.10.0.7:9200/test-index/obj' -d '{
  "value": 50,
  "key": "bar"
}'

curl -XPOST 'http://10.10.0.7:9200/test-index/obj' -d '{
  "value": 60,
  "key": "bar"
}'

curl -XPOST 'http://10.10.0.7:9200/test-index/obj' -d '{
  "value": 70,
  "key": "bar"
}'

Quero obter o valor médio (acima de tudokeys) do mínimovalue doobjestá tendo o mesmokeys. Uma média de mínimos.

O Elasticsearch me permite fazer isso:

curl -XPOST 'http://10.10.0.7:9200/test-index/obj/_search' -d '{
  "size": 0,
  "query": {
    "match_all": {}
  },
  "aggregations": {
    "key_aggregates": {
      "terms": {
        "field": "key",
        "size": 0
      },
      "aggs": {
        "min_value": {
          "min": {
            "field": "value"
          }
        }
      }
    },
    "avg_min_value": {
      "avg_bucket": {
        "buckets_path": "key_aggregates>min_value"
      }
    }
  }
}'

Mas essa consulta retorna o mínimo para cada intervalo, embora eu não precise:

{
  "took": 21,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 4,
    "max_score": 0,
    "hits": [

    ]
  },
  "aggregations": {
    "key_aggregates": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "bar",
          "doc_count": 2,
          "min_value": {
            "value": 50
          }
        },
        {
          "key": "foo",
          "doc_count": 2,
          "min_value": {
            "value": 20
          }
        }
      ]
    },
    "avg_min_value": {
      "value": 35
    }
  }
}

Existe uma maneira de se livrar de todas as informações dentro"buckets": [...]? Eu só estou interessado emavg_min_value.

Isso pode não parecer um problema neste exemplo de brinquedo, mas quando o número de diferenteskeys não é grande (dezenas ou centenas de milhões), a resposta da consulta é proibitivamente grande e eu gostaria de removê-la.

Existe uma maneira de fazer isso com o Elasticsearch? Ou estou modelando meus dados de maneira errada?

NB: não é aceitável pré-agregar meus dados por chave, pois omatch_all parte da minha consulta pode ser substituída por filtros complexos e desconhecidos.

NB2: mudandosize para um número não negativo no meuterms a agregação não é aceitável porque alteraria o resultado.

questionAnswers(1)

yourAnswerToTheQuestion