我有一个弹性搜索索引,其中有很多记录。有一个字段用户名,我希望通过传递逗号分隔值得到每个用户名的最新1个帖子,例如::
约翰,沙希德,话筒,朱莉
我想要每个用户名的最新1个帖子。我怎样才能做到这一点?我可以通过一次传递一个用户名来实现它,但它会打到这么多的http请求。我想在一个请求中做到这一点。
答案 0 :(得分:0)
此查询可以为您提供按post_date按降序排序的这4个ID的所有帖子。您可以处理该数据以获得结果。
{
"sort" : [
{ "post_date" : {"order" : "desc"}}
],
"query" : {
"filtered" : {
"filter" : {
"terms" : {
"username" : ["john","shahid","mike","jolie]
}
}
}
}
}
答案 1 :(得分:0)
您可以使用已过滤的terms
聚合与top_hits
聚合,以实现您的需求:
{
"size": 0,
"query": {
"bool": {
"filter": {
"terms": {
"username": [ "john", "shahid", "mike", "jolie" ]
}
}
}
},
"aggs": {
"usernames": {
"filter": {
"terms": {
"username": [ "john", "shahid", "mike", "jolie" ]
}
},
"aggs": {
"by_username": {
"terms": {
"field": "username"
},
"aggs": {
"top1": {
"top_hits": {
"size": 1,
"sort" : {"created_date" : "desc"}
}
}
}
}
}
}
}
}