Updated:

1 minute read

개요


예제

  • 데이터
     POST painless_test/_doc
     {
       "@timestamp": "2022-05-01T07:00:00.000Z",
       "cluster": "cluster-01",
       "resource": [
         {
           "name": "node-01",
           "cpu": 1,
           "memory": 11,
           "disk": 111
         },
         {
           "name": "node-02",
           "cpu": 2,
           "memory": 22,
           "disk": 222
         },
         {
           "name": "node-03",
           "cpu": 3,
           "memory": 33,
           "disk": 333
         }
       ]
     }
    
  • 요청
     GET painless_test/_search
     {
       "query": {
         "bool": {
           "must": [
             {
               "range": {
                 "@timestamp": {
                   "gte": "2022-05-01T07:00:00.000Z",
                   "lt": "2022-05-01T07:01:00.000Z"
                 }
               }
             }
           ]
         }
       },
       "script_fields": {
         "cluster": {
           "script": {
             "lang": "painless",
             "source": "params._source.cluster"
           }
         },
         "name": {
           "script": {
             "lang": "painless",
             "source": "def list = new ArrayList(); for (item in params._source.resource) {list.add(item.name);} return list;"
           }
         },
         "cpu_sum": {
           "script": {
             "lang": "painless",
             "source": "int sum = 0; for (item in params._source.resource) {sum += item.cpu;} return sum;"
           }
         },
         "memory_sum": {
           "script": {
             "lang": "painless",
             "source": "int sum = 0; for (item in params._source.resource) {sum += item.memory;} return sum;"
           }
         },
         "disk_sum": {
           "script": {
             "lang": "painless",
             "source": "int sum = 0; for (item in params._source.resource) {sum += item.disk;} return sum;"
           }
         },
         "timestamp": {
           "script": {
             "lang": "painless",
             "source": "params._source['timestamp']"
           }
         }
       }
     }
    
  • 응답
     {
       "took" : 8,
       "timed_out" : false,
       "_shards" : {
         "total" : 1,
         "successful" : 1,
         "skipped" : 0,
         "failed" : 0
       },
       "hits" : {
         "total" : {
           "value" : 1,
           "relation" : "eq"
         },
         "max_score" : 1.0,
         "hits" : [
           {
             "_index" : "painless_test",
             "_type" : "_doc",
             "_id" : "w2alaYABFxYHVJl7ArL4",
             "_score" : 1.0,
             "fields" : {
               "cluster" : [
                 "cluster-01"
               ],
               "cpu_sum" : [
                 6
               ],
               "name" : [
                 "node-01",
                 "node-02",
                 "node-03"
               ],
               "disk_sum" : [
                 666
               ],
               "memory_sum" : [
                 66
               ],
               "datacenter_id" : [
                 null
               ],
               "timestamp" : [
                 null
               ]
             }
           }
         ]
       }
     }