python elasticsearch 日期聚合

  1. 索引以及数据如下
bash 复制代码
PUT dateagg
{
  "mappings": {
    "properties": {
      "charge":{
        "type": "double"
      },
      "types":{
        "type": "keyword"
      },
      "create_date":{
        "type": "date",
        "format": "yyyy-MM-dd||strict_date_optional_time ||epoch_millis||E MMM dd H:m:s z y"
      }
    }
  }
}

POST dateagg/_doc/1
{
  "charge":"900",
  "types":"水果",
  "create_date":"2020-09-01"
}


POST dateagg/_doc/2
{
  "charge":"800",
  "types":"水果",
  "create_date":"2020-09-30"
}


POST dateagg/_doc/3
{
  "charge":"1900",
  "types":"熟食",
  "create_date":"2021-10-01"
}



POST dateagg/_doc/4
{
  "charge":"100",
  "types":"熟食",
  "create_date":"2023-12-31"
}
  1. 需求如下
    计算每个月每种类型的销售总额
  2. dsl
bash 复制代码
GET dateagg/_search
{
  "query": {
    "match_all": {}
  },"aggs": {
    "types": {
      "terms": {
        "field": "types"
      },"aggs": {
        "date": {
          "date_histogram": {
            "field": "create_date",
            "interval": "month",
            "format": "yyyy-MM",
            "min_doc_count":1
          },"aggs": {
            "sum": {
              "sum": {
                "field": "charge"
              }
            }
          }
        }
      }
    }
  }
}
  1. python demo
python 复制代码
from elasticsearch_dsl import connections,Search,Q as esQ
conn = connections.create_connection(hosts=['192.168.214.134'],port=9200,http_auth="elastic:ellischen")

index = 'dateagg'

search = Search(using=conn,index=index)
query = esQ('match_all',**{})

search.query = query
search.extra(size=0)

search.aggs.bucket('types','terms',field="types").bucket('date',"date_histogram",field="create_date",format="yyyy-MM",interval="month",min_doc_count=1).metric("sum","sum",field="charge")
response = search.execute().aggregations.to_dict()
print(response)
相关推荐
yunbao00_2 分钟前
博客系统测试报告
python·功能测试·测试用例
长颈鹿仙女6 分钟前
发送 Prompt 指令:请用一句话总结文本内容
python·深度学习·大模型
该用户已不存在9 分钟前
构建现代应用的9个Python GUI库
前端·后端·python
修炼前端秘籍的小帅23 分钟前
精读《JavaScript 高级程序设计 第4版》第6章 集合引用类型(三)Map、WeakMap、Set、WeakSet
开发语言·javascript·ecmascript
Java中文社群24 分钟前
用代码书写浪漫,网友直呼“太美了”!
python
@LetsTGBot搜索引擎机器人35 分钟前
打造属于你的 Telegram 中文版:汉化方案 + @letstgbot 搜索引擎整合教程
开发语言·python·搜索引擎·机器人·.net
人工智能的苟富贵1 小时前
使用 Tauri + Rust 构建跨平台桌面应用:前端技术的新边界
开发语言·前端·rust·electron
j_xxx404_1 小时前
C++ STL:string类(3)|operations|string类模拟实现|附源码
开发语言·c++
GHZero1 小时前
Java 之解读String源码(九)
java·开发语言
Swift社区1 小时前
Lombok 不生效 —— 从排查到可运行 Demo(含实战解析)
java·开发语言·安全