gpt4 book ai didi

elasticsearch - 使用Elasticsearch在确定的时期内按投票筛选

转载 作者:行者123 更新时间:2023-12-03 02:03:52 24 4
gpt4 key购买 nike

我的用户的投票索引如下

{
id: 1
name: John
votes: [
{
id: 1
created_at: 2015-01-01T15:50:59.000+02:00
},
{
id: 2
created_at: 2015-02-15T18:42:30.000+02:00
},
{
id: 3
created_at: 2015-02-22T02:06:15.000+02:00
}
]
},
{
id: 2
name: Mark
votes: [
{
id: 1
created_at: 2015-02-10T08:18:20.000+02:00
}
]
}

我想按确定时期内的投票数来筛选用户,例如,在上个月被投票过两次的用户中,我只会得到约翰。

我知道如何在上个月让用户投票
{  
"filter":{
"bool":{
"must":[
{
"range":{
"user.votes.created_at":{
"from":"now-1M"
}
}
}
]
}
}
}

但是我不知道如何汇总每个文档的票数并对其进行筛选。也许还有其他我可以使用的机制。

先感谢您

最佳答案

如果您想通过SQL中的GROUP BY ... HAVING ...之类的聚合结果来过滤结果,那么(据我所知),Elasticsearch尚无法帮助您……。您将必须在应用程序端进行逻辑处理。参见Issue #4404 on Elasticsearch GitHub

但是查询汇总每个用户的投票数可能看起来像这样:

{
"query":{
"filtered":{
"filter":{
"bool":{
"must":[
{ "range":{ "user.votes.created_at":{ "from":"now-1M" } } }
]
}
}
}
},
"aggs" : {
//A bucket for each user ID
"users": { "terms" : { "field" : "user.id" } },
//Aggregate the number votes for each user
"aggs" : {
"num_votes" : { "value_count" : { "field" : "user.votes.created_at" } }
}
}
}

关于elasticsearch - 使用Elasticsearch在确定的时期内按投票筛选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28739864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com