Простая агрегация на поле для более чем одного значения вasticsearch - PullRequest
0 голосов
/ 03 мая 2020

По сути, я хочу вместо создания doc_count для каждого уникального значения для поля ...

я просто хочу, чтобы два ключа были "пропущены" и "не пройдены". не удалось ключ doc_count должен быть равен сумме doc_count, содержащей значения любого из этих «высоких», «критических» и пройденных ключ doc_count должен быть равен сумме doc_count, содержащей значения любого из них из них «-», «средний», «низкий». Поскольку существует только 5 возможных значений для поля data.vulnerability.severity , которые являются высокими, средними, низкими, критическими и -

, я хочу увидеть, сколько документов содержат значение высокого или критического значения с их ключом как сбой и сколько документов содержат значение среднего или низкого уровня или - с указанным ключом

В настоящее время у меня есть этот запрос

POST /index/_search
{
   "aggs":{
      "2":{
         "date_histogram":{
            "field":"timestamp",
            "fixed_interval":"30m",
            "time_zone":"Asia/Karachi",
            "min_doc_count":1
         },
         "aggs":{
            "3":{
               "terms":{
                  "field":"data.vulnerability.severity",
                  "order":{
                     "_count":"desc"
                  },
                  "size":5
               }
            }
         }
      }
   },
   "size":0,
   "stored_fields":[
      "*"
   ],
   "script_fields":{

   },
   "docvalue_fields":[
      {
         "field":"timestamp",
         "format":"date_time"
      },
      {
         "field":"data.aws.createdAt",
         "format":"date_time"
      },
      {
         "field":"data.aws.end",
         "format":"date_time"
      },
      {
         "field":"data.aws.resource.instanceDetails.launchTime",
         "format":"date_time"
      },
      {
         "field":"data.aws.service.eventFirstSeen",
         "format":"date_time"
      },
      {
         "field":"data.aws.service.eventLastSeen",
         "format":"date_time"
      },
      {
         "field":"data.aws.start",
         "format":"date_time"
      },
      {
         "field":"data.aws.updatedAt",
         "format":"date_time"
      },
      {
         "field":"data.vulnerability.published",
         "format":"date_time"
      },
      {
         "field":"syscheck.mtime_after",
         "format":"date_time"
      },
      {
         "field":"syscheck.mtime_before",
         "format":"date_time"
      }
   ],
   "_source":{
      "excludes":[
         "@timestamp"
      ]
   },
   "query":{
      "bool":{
         "must":[
            {
               "match_all":{

               }
            }
         ],
         "filter":[
            {
               "match_all":{

               }
            },
            {
               "match_phrase":{
                  "manager.name":{
                     "query":"localhost.localdomain"
                  }
               }
            },
            {
               "match_phrase":{
                  "rule.groups":{
                     "query":"vulnerability-detector"
                  }
               }
            },
            {
               "range":{
                  "timestamp":{
                     "gte":"2020-05-02T09:51:04.424Z",
                     "lte":"2020-05-03T09:51:04.424Z",
                     "format":"strict_date_optional_time"
                  }
               }
            }
         ],
         "should":[

         ],
         "must_not":[

         ]
      }
   }
}

результат

{
  "took" : 5,
  "timed_out" : false,
  "_shards" : {
    "total" : 3,
    "successful" : 3,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 338,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "2" : {
      "buckets" : [
        {
          "key_as_string" : "2020-05-02T14:30:00.000+05:00",
          "key" : 1588411800000,
          "doc_count" : 332,
          "3" : {
            "doc_count_error_upper_bound" : 0,
            "sum_other_doc_count" : 0,
            "buckets" : [
              {
                "key" : "Medium",
                "doc_count" : 157
              },
              {
                "key" : "High",
                "doc_count" : 119
              },
              {
                "key" : "Low",
                "doc_count" : 56
              }
            ]
          }
        },
        {
          "key_as_string" : "2020-05-02T15:00:00.000+05:00",
          "key" : 1588413600000,
          "doc_count" : 4,
          "3" : {
            "doc_count_error_upper_bound" : 0,
            "sum_other_doc_count" : 0,
            "buckets" : [
              {
                "key" : "-",
                "doc_count" : 2
              },
              {
                "key" : "Medium",
                "doc_count" : 2
              }
            ]
          }
        },
        {
          "key_as_string" : "2020-05-02T20:00:00.000+05:00",
          "key" : 1588431600000,
          "doc_count" : 2,
          "3" : {
            "doc_count_error_upper_bound" : 0,
            "sum_other_doc_count" : 0,
            "buckets" : [
              {
                "key" : "-",
                "doc_count" : 2
              }
            ]
          }
        }
      ]
    }
  }
}

но я хочу получить такой результат

{
  "took" : 5,
  "timed_out" : false,
  "_shards" : {
    "total" : 3,
    "successful" : 3,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 338,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "2" : {
      "buckets" : [
        {
          "key_as_string" : "2020-05-02T14:30:00.000+05:00",
          "key" : 1588411800000,
          "doc_count" : 332,
          "3" : {
            "doc_count_error_upper_bound" : 0,
            "sum_other_doc_count" : 0,
            "buckets" : [
              {
                "key" : "passed",
                "doc_count" : 213
              },
              {
                "key" : "failed",
                "doc_count" : 119
              }
            ]
          }
        },
        {
          "key_as_string" : "2020-05-02T15:00:00.000+05:00",
          "key" : 1588413600000,
          "doc_count" : 4,
          "3" : {
            "doc_count_error_upper_bound" : 0,
            "sum_other_doc_count" : 0,
            "buckets" : [
              {
                "key" : "passed",
                "doc_count" : 2
              },
            ]
          }
        },
        {
          "key_as_string" : "2020-05-02T20:00:00.000+05:00",
          "key" : 1588431600000,
          "doc_count" : 2,
          "3" : {
            "doc_count_error_upper_bound" : 0,
            "sum_other_doc_count" : 0,
            "buckets" : [
              {
                "key" : "passed",
                "doc_count" : 2
              }
            ]
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...