2016-04-02 15 views
0

を使用して:Elasticsearchマルチ日付範囲集約私はelasticsearch 2.2を使用して、私はこのようないくつかの集計をしたいのJava API

{ 
    "bool":{ 
     "must":[ 
     { 
      "query_string":{ 
       "default_field":"berid", 
       "query":"F600-HHP1" 
      } 
     }, 
     { 
      "query_string":{ 
       "default_field":"matnr", 
       "query":"91P9289AAZZ" 
      } 
      } 
     ] 

    }, 
    "size":0, 
    "aggs":{ 
     "count_by_date_range":{ 
     "date_range":{ 
      "field":"zzupload", 
      "ranges":[ 
       { 
        "from":"2016-03-01", 
        "to":"2016-03-06" 
       }, 
       { 
        "from":"2016-03-07", 
        "to":"2016-03-13" 
       }, 
       { 
        "from":"2016-03-14", 
        "to":"2016-03-20" 
       }, 
       { 
        "from":"2016-03-21", 
        "to":"2016-03-27" 
       }, 
       { 
        "from":"2016-03-28", 
        "to":"2016-04-03" 
       }, 
       { 
        "from":"2016-04-04", 
        "to":"2016-04-10" 
       }, 
       { 
        "from":"2016-04-11", 
        "to":"2016-04-17" 
       }, 
       { 
        "from":"2016-04-18", 
        "to":"2016-04-24" 
       }, 
       { 
        "from":"2016-04-25", 
        "to":"2016-05-01" 
       }, 
       { 
        "from":"2016-05-02", 
        "to":"2016-05-08" 
       }, 
       { 
        "from":"2016-05-09", 
        "to":"2016-05-15" 
       }, 
       { 
        "from":"2016-05-16", 
        "to":"2016-05-22" 
       }, 
       { 
        "from":"2016-05-23", 
        "to":"2016-05-29" 
       }, 
       { 
        "from":"2016-05-30", 
        "to":"2016-06-05" 
       }, 
       { 
        "from":"2016-06-06", 
        "to":"2016-06-12" 
       }, 
       { 
        "from":"2016-06-13", 
        "to":"2016-06-19" 
       } 
      ] 
     }, 
     "aggs":{ 
      "total_fcst_qty":{ 
       "sum":{ 
        "field":"zzamqtu" 
       } 
      } 
     } 
     } 
    } 
} 

私は(「から」日付範囲に数量の合計を計算する必要があります。 "2016 -03-01" 、 "へ": ":

 SearchRequestBuilder searchBuilder = esClient.prepareSearch(Elasticsearch_sap_material_fcst_Index) 
     .setTypes(Elasticsearch_material_fcst_Type) 
     .setQuery(sb.toString()) 
     .addAggregation(AggregationBuilders.dateRange("count_by_date_range").field("zzupload") 
       .addRange("2016-03-01", "2016-03-06") 
       .subAggregation(AggregationBuilders.sum("total_fcst_qty"))); 

どのように2016年3月6日"、...)しかし、それはマルチdate_range.HereをサポートしていませんでしたelasticsearchのJava APIのように見えるのは私のコードですJava APIを使用して複数の日付範囲を計算するには?あなたはREST APIで行ったよう おかげ

答えて

0

は、あなただけの複数の範囲を追加することができます。

SearchRequestBuilder searchBuilder = esClient.prepareSearch(Elasticsearch_sap_material_fcst_Index) 
     .setTypes(Elasticsearch_material_fcst_Type) 
     .setQuery(sb.toString()) 
     .addAggregation(AggregationBuilders.dateRange("count_by_date_range").field("zzupload") 
       .addRange("2016-03-01", "2016-03-06") 
       .addRange("2016-05-23", "2016-05-29") 
     .subAggregation(AggregationBuilders.sum("total_fcst_qty"))); 

をあなたはsource codeを見ている場合、あなたはaddRangeへの各呼び出しは、新しい範囲を追加していることがわかります範囲のリスト。

関連する問題