Kibana 获取在所需持续时间内恰好发生x次的事件的详细信息

zbdgwd5y  于 2022-12-09  发布在  Kibana
关注(0)|答案(1)|浏览(205)

在ElasticSearch中,只有当事件namen天或特定持续时间内恰好发生x次时,我才需要获取记录。
示例索引数据如下:

  1. {"event":{"name":"event1"},"timestamp":"2010-06-20"}

我可以获得在特定持续时间内所需事件名称出现次数最少的记录。但我想要的不是最少,而是精确的匹配计数。以下是我尝试的方法:

  1. {
  2. "_source": true,
  3. "size": 0,
  4. "query": {
  5. "bool": {
  6. "filter":
  7. {
  8. "range": { "timestamp": { "gte": "2010", "lte": "2016" }}
  9. },
  10. "must":
  11. [
  12. { "match": { "event.name.keyword": "event1" }}
  13. ]
  14. }
  15. },
  16. "aggs": {
  17. "occurrence": {
  18. "terms": {
  19. "field": "event.name.keyword",
  20. "min_doc_count": 5,
  21. "size": 10
  22. }
  23. }
  24. }
  25. }

另一种方法是使用value_count,但在这里,我也无法添加一个条件来匹配精确的匹配。

  1. {
  2. "_source": true,
  3. "size": 0,
  4. "query": {
  5. "bool": {
  6. "filter":
  7. {
  8. "range": { "timestamp": { "gte": "2010", "lte": "2016" }}
  9. },
  10. "must":
  11. [
  12. { "match": { "event.name.keyword": "event1" }}
  13. ]
  14. }
  15. },
  16. "aggs": {
  17. "occurrence": {
  18. "value_count": {
  19. "field": "event.name.keyword"
  20. }
  21. }
  22. }
  23. }

它提供如下输出(为简洁起见,删除了其他输出):

  1. "aggregations" : {
  2. "occurrence" : {
  3. "value" : 2
  4. }
  5. }

但是我需要在aggr的输出中添加一个条件(这里是occurrence),以精确匹配事件的发生次数,这样我就可以仅在事件发生x次时才获得记录。
ESMaven能帮我解决这个问题吗?

sg3maiej

sg3maiej1#

您可以使用Bucket Selector Aggregation并添加如下所示的计数条件。下面的查询将为您提供总共发生5次的事件。您可以为您想要应用的任何筛选器添加查询子句,如日期范围或事件名称或任何其他内容。

  1. {
  2. "size": 0,
  3. "aggs": {
  4. "count": {
  5. "terms": {
  6. "field": "event.name.keyword",
  7. "size": 10
  8. },
  9. "aggs": {
  10. "val_count": {
  11. "value_count": {
  12. "field": "event.name.keyword"
  13. }
  14. },
  15. "selector": {
  16. "bucket_selector": {
  17. "buckets_path": {
  18. "my_var1": "val_count"
  19. },
  20. "script": "params.my_var1 == 5"
  21. }
  22. }
  23. }
  24. }
  25. }
  26. }

您将得到如下结果:

  1. "aggregations" : {
  2. "count" : {
  3. "doc_count_error_upper_bound" : 0,
  4. "sum_other_doc_count" : 0,
  5. "buckets" : [
  6. {
  7. "key" : "event1",
  8. "doc_count" : 5,
  9. "val_count" : {
  10. "value" : 5
  11. }
  12. },
  13. {
  14. "key" : "event8",
  15. "doc_count" : 5,
  16. "val_count" : {
  17. "value" : 5
  18. }
  19. }
  20. ]
  21. }
  22. }
展开查看全部

相关问题