Подсчет внутри вложенного последнего элемента массива в документе elasticsearch

Я пытаюсь запросить общее количество ставок, запрошенных в моем elastic search. Мой набор данных выглядит примерно так:

"hits": [
    {
      "_index": "nits_media_",
      "_type": "nits_media_data_collection",
      "_id": "sAsNKnABd82D-bEviD45",
      "_score": 1,
      "_source": {
        "auction_id": "35abc94b-57c3-4961-a7a1-eb6de06ef69e",
        "start": "2020-02-09T13:04:21.803Z",
        "ad_units": [
          {
            "code": "/19968336/header-bid-tag-0",
            "start": "2020-02-09T13:04:21.803Z",
            "finish": "2020-02-09T13:04:22.018Z",
            "status": "Finished",
            "impression": [

            ],
            "bidders": [
              {
                "bidder": "appnexus",
                "start": "2020-02-09T13:04:21.809Z",
                "finish": "2020-02-09T13:04:22.018Z",
                "status": "Bid",
                "cpm": 0.5,
              }
            ]
          },
          {
            "code": "/19968336/header-bid-tag-1",
            "start": "2020-02-09T13:04:21.803Z",
            "finish": "2020-02-09T13:04:22.018Z",
            "status": "Finished",
            "impression": [

            ],
            "bidders": [
              {
                "bidder": "appnexus",
                "start": "2020-02-09T13:04:21.809Z",
                "finish": "2020-02-09T13:04:22.018Z",
                "status": "Bid",
                "cpm": 0.5,
              }
            ]
          }
        ],
        "finish": "2020-02-09T13:04:22.018Z",
      }
    },
]

Мне нужно рассчитать общую сумму количества участников торгов по всем документам. Например, приведенные выше данные дадут мне 2 результата, если таких документов 4, то в результате будет 8.

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

'body' => [
    'query' => [
        'bool' => [
            'must' => [],
        ],
    ],
    'aggs' => [
        'ad_units' => [
            'nested' => ['path' => 'ad_units'],
            'aggs' => [
                'bidders' => [
                    'aggs' => [
                        'request_count' => [
                            'aggs' => [
                                'doc_count' => [
                                    'terms' => ['field' => 'ad_units.bidders.bidder.keyword']
                                ]
                            ],
                            'total_sessions' => [
                                'cardinality' => [
                                    'field' => 'session_id.keyword',
                                    'precision_threshold' => 100,
                                ]
                            ],
                        ],
                    ],
                ]
            ],
        ]
    ]
]

Думаю, я слишком много напортачил, мне нужно руководство по этому поводу. Спасибо.

0 ответов

Другие вопросы по тегам