Elasticsearch: Могу ли я вернуть только количество агг ведра, не возвращая все ведра? - PullRequest
0 голосов
/ 08 марта 2019

Возьмите следующий запрос и результат,

    POST index/_search
    {
      "size": 0,
      "aggs": {
        "perDeviceAggregation": {
          "terms": {
            "field": "deviceID"
          },
          "aggs": {
            "score_avg": {
              "avg": {
                "field": "device_score" 
              }
            }
          }
        },
        "count":{
          "cardinality": {
            "field": "deviceID"
          }
        }
      }
    }

result:

    "aggregations": {
        "aads": {
          "doc_count_error_upper_bound": 0,
          "sum_other_doc_count": 0,
          "buckets": [
            {
              "key": "aa",
              "doc_count": 3,
              "score_avg": {
                "value": 3.8
              }
            },
           {
              "key": "bb",
              "doc_count": 1,
              "score_avg": {
                "value": 3.8
              }
            }
          ]
        },
        "count": {
          "value": 2
        }
      }

Это здорово.Но в моей ситуации меня не волнует информация о каждом ведре.Я только хочу знать количество ведер.Примерно так:

"aggregations": {
    "aads": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "bucket_count": 2
    }
  }

Возможно ли это в Elasticsearch?

Редактировать:

Вы можете удивиться, почему я вычисляю среднее значение (которое ограничивает использование терминов вместо количества элементов)) если мне все равно, что в ведрах.Я использую среднее для агрегации диапазонов.Моя настоящая проблема выглядит следующим образом: приведенный выше вопрос был упрощен.

 POST index/_search
    {
      "size": 0,
      "aggs" : {
        "mos_over_time" : {
          "range" : {
            "field" : "device_score",
            "ranges" : [
              { "from" : 0.0, "to" : 2.6 },
              { "from" : 2.6, "to" : 4.0 },
              { "from" : 4.0 }
            ]
          },
          "aggs": {
            "perDeviceAggregation": {
              "terms": {
                "field": "deviceID"
              },
              "aggs": {
                "score_avg": {
                  "avg": {
                    "field": "device_score" 
                  }
                }
              }
            },
            "count":{
              "cardinality": {
                "field": "deviceID"
              }
            }
          }
        }
      }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...