这是我的索引PublicationsLikes的映射:

  • id:字符串
  • 帐户:字符串
  • api:字符串
  • date:日期

  • 目前,我正在ES上进行汇总,并按(出版物的ID)对结果计数进行分组。
    {
        "key": "<publicationId-1>",
        "doc_count": 25
    },
    {
        "key": "<publicationId-2>",
        "doc_count": 387
    },
    {
        "key": "<publicationId-3>",
        "doc_count": 7831
    }
    

    返回的“键”(ID)是一个信息,但我还需要选择发布的其他字段,例如account和api。有点像:
    {
       "key": "<publicationId-1>",
       "api": "Facebook",
       "accountId": "65465z4fe6ezf456ezdf",
       "doc_count": 25
    },
    {
      "key": "<publicationId-2>",
      "api": "Twitter",
      "accountId": "afaez5f4eaz",
      "doc_count": 387
    }
    

    我该如何处理?

    谢谢。

    最佳答案

    通过top_hits聚合可以最好地实现此要求,您可以在其中对每个存储桶中的文档进行排序并选择第一个存储桶,还可以控制要返回的字段:

    {
      "size": 0,
      "aggs": {
        "publications": {
          "terms": {
            "field": "id"
          },
          "aggs": {
            "sample": {
              "top_hits": {
                "size": 1,
                "_source": ["api","accountId"]
              }
            }
          }
        }
      }
    }
    

    10-01 17:07