Elasticsearch 6: Дополнительная информация в результатах агрегирования - PullRequest
0 голосов
/ 10 июля 2020

Я делаю запрос, например,

 aggs: {
         
            all_devices_types: {
              nested: {
                path: 'devices'
              },
              aggs: {
                devices_device_name: {
                  terms: {
                    field: 'devices.brand_name'
                  }
                },
                devices_brand_name: {
                  terms: {
                    field: 'devices.device_name'
                  }
                }
              }
            }

Все устройства имеют бренд, поэтому одна запись выглядит так

{
"device_name": "R Max",
"device_id": "767",
"brand_name": "Addas",
"brand_id": "726"
}

После того, как я сделаю этот агрегационный запрос, я получаю результаты, например:

"devices_device_name": {
"doc_count_error_upper_bound": 2,
"sum_other_doc_count": 81,
"buckets": [
{
"key": "R max ",
"doc_count": 1406
}
] 
}

Мне нужно в этой агрегации также иметь vlue "brand_name", поэтому результаты должны выглядеть как

"devices_device_name": {"doc_count_error_upper_bound": 2, "sum_other_doc_count": 81, "buckets": [{"brand_name": "Addidass" "key": "R max", "doc_count": 1406}]}

Как я могу выполнить sh это?

1 Ответ

1 голос
/ 10 июля 2020

Вы не можете sh - по крайней мере, не прибегая к сценариям .

То, что вы можете , - это агрегация внутри агрегации :

GET brands/_search
{
  "size": 0, 
  "aggs": {
    "all_devices_types": {
      "nested": {
        "path": "devices"
      },
      "aggs": {
        "by_device_name": {
          "terms": {
            "field": "devices.device_name"
          },
          "aggs": {
            "by_brand_name": {
              "terms": {
                 "field": "devices.brand_name"
              }
            }
          }
        }
      }
    }
  }
}

, что дает количество brand_name в пределах заданного device_name

[
  {
    "key":"R Max",
    "doc_count":1,
    "by_brand_name":{
      "doc_count_error_upper_bound":0,
      "sum_other_doc_count":0,
      "buckets":[
        {
          "key":"Addas",
          "doc_count":1
        }
      ]
    }
  }
]
...