Как контролировать результаты агрегации эластичного поиска с From / Size?
Я пытался добавить пагинацию в агрегации терминов эластичного поиска. В запросе мы можем добавить нумерацию страниц, как,
{
"from": 0, // to add the start to control the pagination
"size": 10,
"query": { }
}
это довольно ясно, но когда я хочу добавить нумерацию страниц к агрегации, я много об этом читал, но ничего не смог найти, мой код выглядит так,
{
"from": 0,
"size": 0,
"aggs": {
"group_by_name": {
"terms": {
"field": "name",
"size": 20
},
"aggs": {
"top_tag_hits": {
"top_hits": {
"size": 1
}
}
}
}
}
}
Есть ли способ создать нумерацию страниц с помощью функции или каких-либо других предложений?
1 ответ
Похоже, вы, вероятно, хотите разделов. Из документов:
Иногда слишком много уникальных терминов для обработки в одной паре запрос / ответ, поэтому может быть полезно разбить анализ на несколько запросов. Это может быть достигнуто путем группировки значений поля в несколько разделов во время запроса и обработки только одного раздела в каждом запросе.
В основном вы добавляете "include": { "partition": n, "num_partitions": x },
, где n
это страница и x
это количество страниц.
К сожалению, эта функция была добавлена сравнительно недавно. Если вы можете поверить тегам в GitHub Issue, которая породила эту функцию, вам нужно использовать Elasticsearch версии 5.2 или выше.