SELECT DATE_FORMAT( publish_time, '%Y-%m-%d' ) AS dateValue, SUM(IFNULL( like_num, 0 )) dataValue FROM mi_new.crawl_wx_article_account_new WHERE del_flag = 0 AND brand_id = 59 AND publish_time BETWEEN '2023-06-01 00:00:00' AND '2023-06-30 23:59:59' GROUP BY DATE_FORMAT( publish_time, '%Y-%m-%d' ) 对应elasticsearch实现
时间: 2024-04-14 20:26:40 浏览: 167
在Elasticsearch中实现该查询,你可以使用elasticsearch-dsl库来构建查询。以下是使用elasticsearch-dsl库来实现该查询的示例代码:
```python
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search
# 连接Elasticsearch
es = Elasticsearch()
# 创建一个Search对象
s = Search(using=es, index="mi_new") \
.query("term", del_flag=0) \
.query("term", brand_id=59) \
.query("range", publish_time={"gte": "2023-06-01 00:00:00", "lte": "2023-06-30 23:59:59"})
# 设置聚合
s.aggs.bucket('by_date', 'date_histogram', field='publish_time', interval='day') \
.metric('total_likes', 'sum', field='like_num')
# 执行查询
response = s.execute()
# 处理结果
for item in response.aggregations.by_date.buckets:
date_value = item.key_as_string
data_value = item.total_likes.value
print(f"dateValue: {date_value}, dataValue: {data_value}")
```
在上述代码中,我们首先连接到Elasticsearch,并创建一个Search对象。然后,我们使用`query`方法设置查询条件,包括`del_flag`、`brand_id`和`publish_time`的范围。接下来,我们使用`bucket`方法设置按日期进行聚合,并使用`metric`方法计算每个日期的点赞总数。最后,我们执行查询并处理结果。
请注意,上述示例假设你已经安装了elasticsearch和elasticsearch-dsl库,并且已经正确配置了连接到Elasticsearch的参数。你可能需要根据你的实际情况进行适当的调整。
阅读全文