

ElasticSearchにおけるaggregationクエリ内でのField追加及び日付指定について、  
以下、アグリゲーションで指定フィールドを集約した結果を日付で抽出し、上位を表示させております。

まずは1点目の質問  
1.集約されたフィールドがそれぞれ表示されますが、そこにデータを追加で表示させたいのですがどのようにすればよろしいでしょうか。

[code]

        "key" : "122.xxx.xxx.xxx",
        "doc_count" : 2013,
        "sample_sum" : {
          "value" : 7730929.0
          以下が追加したいデータ
          場所は問いません
          ----------------------------
          "bgp_ipv4_next_hop" : 1 or 0
          ----------------------------
        },
    
    "sample_range" : {
          "buckets" : [ {
            "key" : "2016-02-24T09:14:00.000Z-2016-02-24T09:29:18.517Z",
            "from" : 1.45630524E12,
            "from_as_string" : "2016-02-24T09:14:00.000Z",
            "to" : 1.456306158517E12,
            "to_as_string" : "2016-02-24T09:29:18.517Z",
            "doc_count" : 295,
            "sample_calculate" : {
              "value" : 1043050.0
            }
    
[/code]

例えば上記のクエリの集約結果にbgp_ipv4_next_hopのデータをipごとに追加したい場合、  
どのように追加すればよろしいでしょうか。作成クエリは下部に記載しております。  
色々ネストしてみましたが、なかなか上手くいきません。

2.現在、以下の設定で1時間ごとのデータ抽出を行っておりますが。  
こちら定常的に00:00に実行したい場合、時間の指定は出来るのでしょうか。  
またそうであれば、どのように毎日決められた時間に実行するのでしょうか。  
(正直、まだ時間の記法についてよくわかっていません...)

[code]

     "gte": "now-1h/h",
      "lte": "now/d",
    
[/code]

以下、作成クエリ

[code]

    {
      "size": 0,
      "query": {
        "filtered": {
          "query": {
            "query_string": {
              "query": "*",
              "analyze_wildcard": true
            }
          },
          "filter": {
            "bool": {
              "must": [
                {
                  "range": {
                    "@timestamp": {
                      "gte": "now-1h/h",
                      "lte": "now/d",
                      "format": "epoch_millis"
                    }
                  }
                }
              ],
              "must_not": []
            }
          }
        }
      },
      "aggs": {
        "sample_query": {
          "terms": {
            "field": "ipv4_src_addr",
            "size": 15,
            "order": {
              "tsutsui_sum": "desc"
            }
          },
          "aggs": {
            "sample_sum": {
              "sum": {
                "field": "in_bytes"
              }
            },
            "sample_range": {
              "date_range": {
                "field": "@timestamp",
                "ranges": [
                  {
                    "from": "now-15m/m",
                    "to": "now"
                  }
                ]
              },
              "aggs": {
                "sample_calculate": {
                  "sum": {
                    "field": "in_bytes"
                  }
                }
              }
            }
          }
        }
      }
    }
    
[/code]

どうぞよろしくお願い致します。

以下、使用するnetflowのデータ構造

[code]

         "mappings" : {
         "netflow" : {
         "properties" : {
          "@timestamp" : {
            "type" : "date",
            "format" : "strict_date_optional_time||epoch_millis"
          },
          "bgp_ipv4_next_hop" : {
            "type" : "string"
          },
          "bgp_ipv6_next_hop" : {
            "type" : "string"
          },
          "direction" : {
            "type" : "long"
          },
          "dst_as" : {
            "type" : "long"
          },
          "dst_mask" : {
            "type" : "long"
          },
          "egress_vrf_id" : {
            "type" : "long"
          },
          "first_switched" : {
            "type" : "date",
            "format" : "strict_date_optional_time||epoch_millis"
          },
          "flow_sampler_id" : {
            "type" : "long"
          },
          "flow_sampler_mode" : {
            "type" : "long"
          },
          "flow_sampler_random_interval" : {
            "type" : "long"
          },
          "flow_seq_num" : {
            "type" : "long"
          },
          "flowset_id" : {
            "type" : "long"
          },
          "forwarding_status" : {
            "type" : "long"
          },
          "geoip_city" : {
            "type" : "string"
          },
          "geoip_country" : {
            "type" : "string"
          },
          "geoip_lat" : {
            "type" : "double"
          },
          "geoip_lon" : {
            "type" : "double"
          },
          "geoip_pin" : {
            "type" : "string"
          },
          "host" : {
            "type" : "string"
          },
          "in_bytes" : {
            "type" : "long"
          },
          "in_pkts" : {
            "type" : "long"
          },
          "ingress_vrf_id" : {
            "type" : "long"
          },
          "input_snmp" : {
            "type" : "long"
          },
          "ipv4_dst_addr" : {
            "type" : "string"
          },
          "ipv4_src_addr" : {
            "type" : "string"
          },
          "ipv6_dst_addr" : {
            "type" : "string"
          },
          "ipv6_dst_mask" : {
            "type" : "long"
          },
          "ipv6_flow_label" : {
            "type" : "long"
          },
          "ipv6_option_headers" : {
            "type" : "long"
          },
          "ipv6_src_addr" : {
            "type" : "string"
          },
          "ipv6_src_mask" : {
            "type" : "long"
          },
          "l4_dst_port" : {
            "type" : "long"
          },
          "l4_src_port" : {
            "type" : "long"
          },
          "last_switched" : {
            "type" : "date",
            "format" : "strict_date_optional_time||epoch_millis"
          },
          "output_snmp" : {
            "type" : "long"
          },
          "protocol" : {
            "type" : "long"
          },
          "sampler_name" : {
            "type" : "string"
          },
          "src_as" : {
            "type" : "long"
          },
          "src_mask" : {
            "type" : "long"
          },
          "src_tos" : {
            "type" : "long"
          },
          "system" : {
            "type" : "string"
          },
          "tcp_flags" : {
            "type" : "long"
          },
          "version" : {
            "type" : "long"
              }
            }
          }
        }
      }
    }
    
[/code]

以下サンプルデータ

[code]

            @timestamp  March 3rd 2016, 14:36:00.000
        t_id    AVM6-heNCCEYIL1vsnDa
        t_index     flow-20160303
        #_score     1
        t_type  netflow
        tbgp_ipv6_next_hop  ::
        #direction  0
        #dst_as     0
        #egress_vrf_id  1,610,612,736
        first_switched  March 3rd 2016, 14:35:45.999
        #flow_sampler_id    1
        #flow_seq_num   150,022,732
        #flowset_id     266
        #forwarding_status  64
        thost   133.130.xxx.xxx
        #in_bytes   1,500
        #in_pkts    1
        #ingress_vrf_id     1,610,612,736
        #input_snmp     84
        tipv6_dst_addr  2400:8500:1301:2519:157:7:xx:xx
        #ipv6_dst_mask  64
        #ipv6_flow_label    0
        #ipv6_option_headers    0
        tipv6_src_addr  2001:da8:208:849d:c86d:769a:xxxx:xxxx
        #ipv6_src_mask  32
        #l4_dst_port    25,565
        #l4_src_port    6,944
        last_switched   March 3rd 2016, 14:35:45.999
        #output_snmp    10
        #protocol   6
        #src_as     23,910
        #src_tos    0
        #tcp_flags  16
        #version    9
    
[/code]


CC BY-SA 3.0
2016-02-25T01:24:47.453
22498
2016-03-03T05:39:57.660
2016-03-03T05:39:57.660
14541
14541
question
elasticsearch
aggregationクエリ内でのField追加及び日付指定について


1番目の質問は、データの構造や、出力結果としてどんなものが欲しいかをもう少しわかりやすく書いていただいた方が良いかと。  
サンプルデータなどがあると回答しやすいです。

2番目の質問ですが、クエリの定期実行はElasticsearchの機能ではないかと。  
外部（cronなど）から起動したり、Watcherという商用のプラグインなどで定期実行する方法になるかと。  
使用されている'now-1h/h'といった表記に関しては、クエリが実行された時点での時間を元にElasticsearchが計算処理を行います。


CC BY-SA 3.0
2016-03-02T08:26:23.857
22730
2016-03-02T08:26:23.857
2792
22498
answer