获取事件的细节发生在所需持续时间中
在Elasticsearch中,我仅在事件名称
发生 x
time n 天或特定持续时间时才需要获取记录。
样本索引数据如下:
{"event":{"name":"event1"},"timestamp":"2010-06-20"}
我能够在特定持续时间内获取所需事件名称的最小发生记录。但是,我想要确切的匹配计数,而不是最低限度。这是我尝试的:
{
"_source": true,
"size": 0,
"query": {
"bool": {
"filter":
{
"range": { "timestamp": { "gte": "2010", "lte": "2016" }}
},
"must":
[
{ "match": { "event.name.keyword": "event1" }}
]
}
},
"aggs": {
"occurrence": {
"terms": {
"field": "event.name.keyword",
"min_doc_count": 5,
"size": 10
}
}
}
}
实现同样的方法是使用 value_count
。但是在这里,我也无法添加条件以匹配确切的事件。
{
"_source": true,
"size": 0,
"query": {
"bool": {
"filter":
{
"range": { "timestamp": { "gte": "2010", "lte": "2016" }}
},
"must":
[
{ "match": { "event.name.keyword": "event1" }}
]
}
},
"aggs": {
"occurrence": {
"value_count": {
"field": "event.name.keyword"
}
}
}
}
它提供了输出为(简短删除其他输出):
"aggregations" : {
"occurrence" : {
"value" : 2
}
}
但是我需要在AGGR的输出中添加条件(出现
)以与此事件完全匹配,以便我只能获取记录如果事件发生恰好发生X时间。
一些ES专家可以帮助我吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用并添加条件,如下所示。以下查询将为您提供总共5次的事件。您可以为要应用的任何过滤器添加一个查询子句,例如日期范围或事件名称或其他任何内容。
您将获得以下类似的结果:
You can use Bucket Selector Aggregation and add condition as shown below for the count. Below query will give you only event which is occurs total 5 times. You can add a query clause for whatever filter you want to apply like date range or event name or anything else.
You will get result something like below: