【发布时间】:2016-02-18 19:25:41
【问题描述】:
我试图从同名记录中获取文档的最大值。例如,我有 3 个用户,其中 2 个同名但关注者数不同,我想根据 follower_count 的最大值从 2 个同名的同名文档中只返回 1 个文档。
{ id: 1, name: "John Greenwood", follower_count: 100 }
{ id: 2, name: "John Greenwood", follower_count: 200 }
{ id: 3, name: "John Underwood", follower_count: 300 }
所以结果是,
{ id: 2, name: "John Greenwood", follower_count: 200 }
{ id: 3, name: "John Underwood", follower_count: 300 }
从2个相同的名字中,拥有最多关注者的人获胜,另外一个人也会来。
我有如下映射,
"users-development" : {
"mappings" : {
"user" : {
"dynamic" : "false",
"properties" : {
"follower_count" : {
"type" : "integer"
},
"name" : {
"type" : "string",
"fields" : {
"exact" : {
"type" : "string",
"index" : "not_analyzed"
}
}
},
}
}
}
这就是我长期被困的地方,
{
query: {
filtered: {
filter: {
bool: {
must: [
{ terms: { "name.exact": [ "John Greenwood", "John Underwood" ] } },
]
}
}
}
},
aggs: {
max_follower_count: { max: { field: 'follower_count' } }
},
size: 1000,
}
有什么建议
【问题讨论】:
-
这是我唯一有时间找到的:stackoverflow.com/questions/18449703/… 将尝试再次回复更多细节
-
这是完整的查询吗?您收到任何错误消息吗?
size:1000,末尾的尾随逗号会导致问题。我使用您的数据运行了查询,其他方面没有问题。 -
@IanGabes 不,我在 ruby 中工作时没有收到任何错误消息
标签: ruby ruby-on-rails-4 elasticsearch elasticsearch-rails