我刚刚学习了弹性,我想写一些代码来分析不同时间维度的用户请求API。
- 用户一天请求多少次?
- 用户一周内请求多少次?
- 用户一个月内请求了多少次?
- 用户一年内请求多少次?
代码如下所示:
POST my-index/_count
{
"query": {
"bool": {
"filter": [
{
"terms": {
"user_id.keyword": ["USER_ID"]
}
},
{
"wildcard": {
"uri.keyword": "/api-path*"
}
},
{
"range": {
"@timestamp": {
"gte": "now-1y/y",
"lte": "now/d"
}
}
}
]
}
}
}
但我应该在不同的@TIMESTAMP参数中将代码发送给弹性四次(现在是-1d/d,现在是-1w/w,现在是-1m/m,现在是-1y/y)。这将耗费大量的网络和计算资源。
有没有什么方法可以把它们放在一个请求中?
1条答案
按热度按时间zwghvu4y1#
TLDR;
使用
Elasticsearch
的multi-search api是可能的看起来是这样的:
Elasticearch的客户端库确实实现了此功能。