2

同じ名前のレコードからドキュメントの最大値を取得しようとしています。たとえば、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,
          }

提案があればお願いします

4

2 に答える 2