您将需要使用术语汇总来获取所有唯一身份用户,然后使用热门匹配来针对每个用户仅获取一个结果。这就是它的样子。
{ "query": { "bool": { "should": [ { "match_phrase": { "gtitle": { "query": "voice", "boost": 1 } } }, { "match_phrase": { "gdesc": { "query": "voice", "boost": 1 } } }, { "match": { "city": { "query": "voice", "boost": 2 } } }, { "match": { "gtags": { "query": "voice", "boost": 1 } } } ], "must_not": [ { "term": { "profilepicture": "" } } ], "minimum_should_match": 1 } }, "aggs": { "unique_user": { "terms": { "field": "userid", "size": 100 }, "aggs": { "only_one_post": { "top_hits": { "size": 1 } } } } }, "size": 0}
在这里
size,用户聚合的内部值为100,如果您有更多的唯一用户(默认值为10),则可以增加该值,最外面的
size也为零,以仅获得聚合结果。要记住的一件事是您的用户ID必须是唯一的,即
ABC 和 abc 将被视为不同的用户,您可能必须设置用户ID
not_analyzed才能确保这一点。关于更多。
希望这可以帮助!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)