Пейджинг агрегации top_hits в ElasticSearch - PullRequest
0 голосов
/ 08 марта 2019

Сейчас я выполняю агрегацию top_hits в Elastic Search, которая группирует мои данные по полю, сортирует группы по дате и выбирает верхнюю 1.

Мне нужно каким-то образом отобразить результаты агрегации так, чтобы я мог пройти через размер страницы и номер страницы, но я не знаю, как.

В дополнение к этому мне также нужны общие результаты этой агрегации, чтобы мы могли показать ее в таблице в нашем веб-интерфейсе.

Агрегирование выглядит так:

POST my_index/_search
{
  "size": 0,
  "aggs": {
    "top_artifacts": {
      "terms": {
        "field": "artifactId.keyword"
      },
      "aggs": {
        "top_artifacts_hits": {
          "top_hits": {
            "size": 1,
            "sort": [{
              "date": {
                "order": "desc"
              }
            }]
          }
        }
      }
    }
  }
} 

1 Ответ

0 голосов
/ 08 марта 2019

Если я понимаю, что вы хотите, вы сможете выполнить нумерацию страниц через Составное объединение .Вы все еще можете передать свой параметр size в свою нумерацию страниц, но ваш from будет ключом для корзины.

POST my_index/_search
{
  "size": 0, 
  "aggs": {
    "top_artifacts": {
      "composite": {
        "sources": [
          {
            "artifact": {
              "terms": {
                "field": "artifactId.keyword"
              }
            }
          }
        ]
        , 
        "size": 1, // OPTIONAL SIZE (How many buckets)
        "after": {
          "artifact": "FOO_BAZ" // Buckets after this bucket key
        }
      },
      "aggs": {
        "hits": {
          "top_hits": {
            "size": 1,
            "sort": [
              {
                "timestamp": {
                  "order": "desc"
                }
              }
              ]
          }
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...