2017-05-12 127 views
0

我在一個索引中有來自不同應用程序的文檔,應用程序名稱是每個文檔中的一個字段。現在我想要統計每個應用程序每天的文檔數量。應用程序名稱採用字符串格式,因此我無法使用過濾條件。 雖然低於GET查詢每層可以combine query_string和聚合

{ 
    "query": { 
    "filtered": { 
     "query": { 
     "query_string": { 
      "query": "+environmentType:prod +application:app1", 
      "analyze_wildcard": true 
     } 
     } 
    } 
    } 
} 

過濾,我可以用這個聚集了簡單的日常計數

{ 
    "aggs": { 
    "simpleDatehHistogram": { 
     "date_histogram": { 
     "field": "timestamp", 
     "interval": "day" 
     } 
    } 
    } 
} 

我似乎不能夠把它們結合在一起,使應用程序過濾器應用於我的聚合結果。

這是我的索引映射。

{ 
    "myIndex" : { 
    "mappings" : { 
     "myType" : { 
     "properties" : { 
      "application" : { 
      "type" : "string" 
      }, 
      "environmentType" : { 
      "type" : "string" 
      }, 
      "event" : { 
      "properties" : { 
       "Id" : { 
       "type" : "long" 
       }, 
       "documentId" : { 
       "type" : "string" 
       }, 
      } 
      }, 
      "hostname" : { 
      "type" : "string" 
      }, 
      "id" : { 
      "type" : "string" 
      }, 
      "timestamp" : { 
      "type" : "date", 
      "format" : "dateOptionalTime" 
      }, 
      "timestampEpoch" : { 
      "type" : "long" 
      }, 
      "type" : { 
      "type" : "string" 
      }, 
      "version" : { 
      "type" : "string" 
      } 
     } 
     } 
    } 
    } 
} 

回答

0

使用此將它們結合起來:

{ 
    "size" : 0,   
    "query": { 
    "filtered": { 
    "query": { 
    "query_string": { 
     "query": "+environmentType:prod +application:app1", 
     "analyze_wildcard": true 
     } 
    } 
    } 
    }, 
    "aggs": { 
    "simpleDatehHistogram": { 
    "date_histogram": { 
    "field": "timestamp", 
    "interval": "day" 
     } 
    } 
    } 
} 
+0

這是我真實目的是試圖的第一件事情,但結果是相同的,無論我的應用程序的名稱,所以我想這是不是應用的過濾器。 .. – Acalypha

+0

你可以只發布你的索引映射。 'GET index/type/_mapping' – Richa

+0

我剛剛嘗試過上面的查詢,它確實在上面應用查詢的基礎上爲我帶來了聚合桶。你能詳細解釋一下嗎? – Richa