Фильтр внутри Aggregation для запроса Elasticsearch - PullRequest
0 голосов
/ 09 мая 2019

У меня есть запрос, который пытается собрать записи по полю года, а затем для каждого сегмента я хочу

  • Создать подсчет (числитель) с критериями фильтра и получить количество элементов (уникальное)count) из custom_id
  • Создайте вспомогательный счетчик (знаменатель) с критериями фильтра и получите количество (уникальный счетчик) custom_id
  • Разделите числитель и знаменатель

ЧтоЯ не могу сделать, это добавить критерии фильтра для подкаталогов числителя и знаменателя.

Вот как выглядит мой запрос -

GET <index_name>/_search
{
  "size": 0,
  "query": { . . <ABLE TO USE bool QUERY HERE>. . },
  "aggs": {
    "test": {
      "date_histogram": {
        "field": "datetimefield",
        "interval": "year",
        "format": "yyyy"
      },
      "aggs": {
        "filter": { <UNABLE TO USE THE SAME bool QUERY here> },
        "denominator": {
          "cardinality": {
            "field": "custom_id.keyword"
          }
        },
        "numerator": {
          "cardinality": {
            "field": "custom_id.keyword"
          }
        },
        "division": {
          "bucket_script": {
            "buckets_path": {
              "denom": "denominator",
              "num": "numerator"
            },
            "script": "params.num / params.denom"
          }
        }
      }
    }
  }
}

Причина, по которой мне нужен блок фильтрадля числителя и знаменателя, потому что у меня есть разные критерии для них обоих.Можно ли сделать то, что я пытаюсь достичь здесь?

...