同じ名前のレコードからドキュメントの最大値を取得しようとしています。たとえば、3 人のユーザーがいて、そのうちの 2 人は同じ名前ですが、フォロワー数が異なります。最大の Followers_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名のうち、フォロワー数が多い方が勝ち、他の1名も出てきます。
私は次のようにマッピングしています、
"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,
}
提案があればお願いします