0

次のクエリを実行しようとしています。ドキュメントの STATUS に 3 つの属性があります。これは、"FAIL"、"PASS"、"INVALID" DATE のいずれかで、日付と時刻が含まれています。

ステータスごとの1日のカウント数が欲しい

例: 日付: 11-09-2016、ステータス: 失敗、カウント: 120
日付: 11-09-2016、ステータス: 合格、カウント: 150

過去 1 か月、2 か月などのデータが必要です

 SearchRequest requestQuery =
Requests.searchRequest(ConstantsValue.indexName)
    .types(ConstantsValue._Type)
    .source("{size:999999,"
    + "\"_source\" : "
    + "[\"DTCREATED\", \"STATUS\"]"             
    + ",\"aggs\": "     
    + "{\"group_by_STATUS\": {\"terms\": {\"field\": \"STATUS\"},"
    + "\"aggs\" : "
    + "{\"group_by_DATE\" : {\"date_histogram\" : "
    + "{\"field\" : \"DTCREATED\", \"interval\" : \"day\","
    + "\"format\" : \"yyyy-MM-dd\" },"
    + "\"aggs\" : "
    + "{\"grades_count\" : { \"value_count\" : { \"field\" : \"STATUS\" } }}}}}}}");

このコードは、各ステータスの毎日のカウントを示しますが、すべてのレコードについてです。以下のような範囲フィルターを追加します。

+"\"query\": {"
+" \"filtered\": {"
+" \"filter\": {"
+ "\"range\": { \"DTCREATED\": { \"gte\": \"now-90d/d\" }}"
+"}}}}}");

しかし、これら 2 つのクエリのコンテンツをマージすることはできません。私は最善を尽くしました。どんな助けでも大歓迎です。

4

2 に答える 2

0

クエリを追加する必要があります..次のようにクエリと集計を組み合わせることができます:

"query": {
    "range": {
       "@timestamp": {
          "from": "now-90d"
       }
    }
},
"aggs" : {"..."}

「d」は日を表します。このクエリでは、「現在 - 90 日」から今日までのすべてのドキュメントを尋ね、最後の回答からの集計を追加します。ここでクエリelasticsearch range query
を探すことができます

于 2016-12-04T12:11:34.167 に答える