Elasticsearch / Kibana - Могу ли я использовать результат запроса в скриптовом запросе для выполнения вычислений? - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь создать запрос для вывода отношения.Первое число - сумма агрегации поля OutageTime.Второе число - это поле со сценарием.

Вот мое отображение:

    {
      "ms-services-2018.10.11": {
        "mappings": {
          "doc": {
            "properties": {
              "@timestamp": {
                "type": "date"
              },
              "@version": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "EmailDirection": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "OutageTime": {
                "type": "long"
              },
              "RequestedDateTime": {
                "type": "date"
              },
              "SearchRangeMinutes": {
                "type": "long"
              },
              "host": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "isServiceAvailable": {
                "type": "boolean"
              },
              "tags": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              }
            }
          }
        }
      },
      "ms-services-2018.10.12": {
        "mappings": {
          "doc": {
            "properties": {
              "@timestamp": {
                "type": "date"
              },
              "@version": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "EmailDirection": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "OutageTime": {
                "type": "long"
              },
              "RequestedDateTime": {
                "type": "date"
              },
              "SearchRangeMinutes": {
                "type": "long"
              },
              "host": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "isServiceAvailable": {
                "type": "boolean"
              },
              "tags": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              }
            }
          }
        }
      }
    }

Вот мой запрос:

    GET index-*/_search
    {
      "_source": {
                  "includes": [ "RequestedDateTime"]
      },
      "aggs":{  
             "TotalOutageTimSeconds":{  
                 "sum":{  
                     "script":"doc['OutageTime'].value"
                 }
              }
          },
      "sort":[{
        "RequestedDateTime":{
          "order":"asc"
        }
      }],
      "size": 1, 
      "script_fields":{
        "AvailabilityRatio":{
          "script":"(1 - (TotalOutageTimSeconds  / (new Date().getTime() - doc['RequestedDateTime'].value.getMillis()) / 1000))"
        }
      }
    }

Основано на моем отображении и запросе,Можно ли использовать результат агрегирования (TotalOutageTimSeconds) в скриптовом запросе (AvailabilityRatio)?

...