如何在聚合中“折叠”文档

lc8prwob  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(1)|浏览(322)

与此斗争,所以任何帮助将不胜感激!
我有一个聚合,它提供了按角色、性别和年龄分组的文档计数(在日期直方图中):

"aggs": {
"period": {
  "date_histogram": {
    "field": "timestamp",
    "fixed_interval": "15m",
    "time_zone": "America/Los_Angeles",
    "order": {
      "_key": "desc"
    }
  },
  "aggs": {
    "role": {
      "terms": {
        "field": "role",
        "size": 3
      },
      "aggs": {
        "gender": {
          "terms": {
            "field": "gender",
            "size": 3
          },
          "aggs": {
            "age": {
              "terms": {
                "field": "age",
                "size": 10
              }
            }
          }
        }
      }
    }
  }
}

}
每个文档都有一个visitorid,在同一个日期直方图bucket中可能有许多文档具有相同的visitorid。
我只想在每个日期直方图桶中包含唯一的visitorid。实际上,我想避免双重/三重等计数,因为它是同一个访客。有可能吗?

yjghlzjz

yjghlzjz1#

每个文档都有一个visitorid,在同一个日期直方图bucket中可能有许多文档具有相同的visitorid。
如果仅针对每个访问者角色,性别和年龄相同,那么下面的查询(在visitorid上添加基数子聚合)应该有效:

"aggs": {
"period": {
  "date_histogram": {
    "field": "timestamp",
    "fixed_interval": "15m",
    "time_zone": "America/Los_Angeles",
    "order": {
      "_key": "desc"
    }
  },
  "aggs": {
    "role": {
      "terms": {
        "field": "role",
        "size": 3
      },
      "aggs": {
        "gender": {
          "terms": {
            "field": "gender",
            "size": 3
          },
          "aggs": {
            "age": {
              "terms": {
                "field": "age",
                "size": 10
              },"aggs": {
                 "visitors": {
                   "cardinality": {
                    "field": "visitorId"
                    }
                   }
                }
            }
          }
        }
      }
    }
  }
}
}

相关问题