Как я могу получить количество сегментов по значениям их вложенных агрегатов? - PullRequest
2 голосов
/ 21 сентября 2019

Работа над Elasticsearch 6.4.

Мой индекс полон документов, имеющих group_id.

Я хочу сгруппировать по group_id, а затем агрегировать в каждой группе пологическое значение для active.Я хочу вернуть истину, если какой-либо документ в группе активен.(Я думаю, что я могу сделать это с агрегацией max, поскольку логическое значение active возвращает 1 для true и 0 для false для каждого документа.

Затем Я хочусделайте подсчет групп, которые являются «активными».

Итак, в конце дня я просто хочу целое число. Что ж, в будущем я захочу повторить процесс для некоторого другого логического значениязначения.

Вот что я пробовал:

{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "my_filter_terms": [
              "foo",
              "bar"
            ]
          }
        }
      ]
    }
  },
  "_source": {
    "includes": [],
    "excludes": []
  },
  "aggregations": {
    "group_by_group_id": {
      "terms": {
        "field": "group_id",
        "size": 10000,
        "min_doc_count": 1
      },
      "aggregations": {
        "group_active": {
          "max": {
            "field": "active"
          }
        },
        "count_total": {
          "filters": {
            "filters": {
              "total": {
                "exists": {
                  "field": "group_id"
                }
              },
              "active": {
                "term": {
                  "group_active": true
                }
              }
            }
          }
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...