0

我试图找出是否可以对一个字段进行分面/聚合,如果该字段(这是一个数组)包含 1 个或多个记录。

例如 - 假设我的索引中有 3 个文档,都在“用户”类型下。

  {
    "id": 1,
    "name": "Thomas",
    "surname": "Test",
    "photos": []
  },
  {
    "id": 2,
    "name": "Thomas",
    "surname": "Test",
    "photos": [
      "photo 1",
      "photo 2",
      "photo 3"
    ]
  },
  {
    "id": 3,
    "name": "Thomas",
    "surname": "Test",
    "photos": [
      "photo 1",
      "photo 2",
      "photo 3"
    ]
  }

我想要某种方式(使用聚合)来返回“拥有(或没有,因为我可以从他们的个人资料中的_totalHits)照片中减去的用户数量。” 在此示例中,预期结果将是2,因为 2 个用户有照片,或1,因为 1 个用户没有照片。显然,我想要的首选是返回照片的用户数量的那个。

这可能吗?如果是这样 - 我将使用哪种类型的聚合来完成此操作?

4

1 回答 1

0

Missing Aggregation似乎是正确的工具:

基于字段数据的单桶聚合,它创建一个包含当前文档集上下文中缺少字段值的所有文档的桶(实际上,缺少字段或具有配置的 NULL 值集)。此聚合器通常与其他字段数据桶聚合器(例如范围)结合使用,以返回由于缺少字段数据值而无法放入任何其他桶中的所有文档的信息。

不在此存储桶中的所有内容都是有照片的用户。指南中有用的参考页面:处理空值

于 2014-07-04T04:39:41.287 回答