结合query_string和聚合

时间:2017-05-12 08:11:45

标签: elasticsearch query-string elasticsearch-aggregation

我在一个索引中有来自不同应用程序的文档,每个文档中的应用程序名称都是一个字段。现在我想计算每个应用程序每天的文档数量。应用程序名称是字符串格式,因此我不能使用过滤器术语。 虽然下面的GET查询执行每个应用程序的过滤

{
  "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"
          }
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

用它来组合它们:

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