ElasticSearch - ограничить размер вложенной коллекции в результате запроса
Если у меня есть запись в блоге с тысячами (или сотнями тысяч) nested
комментарии, и я хочу получить только лучшие 10 сообщений в блоге. Я просто буду использовать size
контролировать, сколько сообщений в блоге я хочу получить, но я не уверен, как ограничить размер, сколько nested
комментарии, которые я хочу.
например, это вернет топ-10 постов в блоге с неограниченным количеством комментариев
GET myblog/_search
{
"size": 10,
"query": {
"match_all": {}
}
}
я попробую inner_hits
но это не работает для меня. Когда я использовал, я должен был сделать запрос во вложенных комментариях, я также отключил источник (чтобы избежать получения сообщения со всеми комментариями), и результат inner_hits даст мне каждый комментарий с каждым сообщением (избыточный), хотя в некоторых случаи это один и тот же родительский пост. Я тоже думал о parent-child
подход, но это означает, создает несколько запросов / запросов.
Знаете ли вы, как ограничить размер вложенной коллекции в запросе?
То, что я ищу, это создать запрос, который я могу сделать, например, получить топ-10 постов в блоге с топ-5 комментариев.
1 ответ
Можете ли вы попробовать этот запрос:
{
"_source": false,
"fields":["your_fields"],
"size": 10,
"query": {
"match_all": {}
},
"inner_hits" : {
"comments" : {
"path" : {
"comments" : {
"size":5,
"query" : {
"match_all": {}
}
}
}
}
}
}