在弹性搜索中,分组依据和过滤两个日期之间的最大值(日期)

2024-05-15 13:32:42 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我们可以在弹性搜索中按客户的身份分组。在

以下是文档结构

{
    "order_id":"6",
    "customer_id":"1",
    "customer_name":"shailendra",
    "mailing_addres":"shailendra@gmail.com",
    "actual_order_date":"2000-04-30",
    "is_veg":"0",
    "total_amount":"2499",
    "store_id":"276",
    "city_id":"12",
    "payment_mode":"cod",
    "is_elite":"0",
    "product":["1","2"],
    "coupon_id":"",
    "client_source":"1",
    "vendor_id":"",
    "vendor_name: "",
    "brand_id":"",
    "third_party_source":""

}

现在我们需要过滤组来查找文档

  1. 两个日期之间的最后订购日期
  2. 两个日期之间的第一个订单日期

我们如何才能做到这一点?在


Tags: name文档idsource客户isorder身份
1条回答
网友
1楼 · 发布于 2024-05-15 13:32:42

您可以尝试使用下面的查询。在每个customer bucket中,我们进一步过滤两个日期之间的所有文档(这里我用的是2016年8月),然后在date字段上运行一个stats聚合。{{date}的值将是顺序

{
  "aggs": {
    "customer_ids": {
      "terms": {
        "field": "customer_id"
      },
      "aggs": {
        "date_filter": {
          "filter": {
            "range": {
              "actual_order_date": {
                "gt": "2016-08-01T00:00:00.000Z",
                "lt": "2016-09-01T00:00:00.000Z"
              }
            }
          },
          "aggs": {
            "min_max": {
              "stats": {
                "field": "actual_order_date"
              }
            }
          }
        }
      }
    }
  }
}

相关问题 更多 >