Restrict ElasticSearch aggregation by type? Restrict ElasticSearch aggregation by type? elasticsearch elasticsearch

Restrict ElasticSearch aggregation by type?


You could filter the aggregation by type, and then use sub-aggregations. For example:

{  "aggs": {    "Test 1": {      "filter": {        "type": {          "value": "type1"        }      },      "aggs": {        "agg_name": {          "terms": {            "field": "field1",            "size": 10          }        }      }    },    "Test 2": {      "filter": {        "type": {          "value": "type2"        }      },      "aggs": {        "agg_name": {          "terms": {            "field": "field2",            "size": 10          }        }      }    }  }}


If you can aggregate by an field in all types:

curl -XGET 'localhost:9200/index/type1,type2,type3,typeN/_search/?pretty=true' -d '{      "query": {        "filtered": {          "query": {            "match_all": {}          }        }      },      "size": 0,      "aggs": {        "field_aggs": {          "terms": {            "size": 0,            "field": "field_common_on_all_types"          },          "aggs": {            "testing": {              "terms": {                "field": "_type"              },              "aggs": {                "testing": {                  "date_histogram": {                    "field": "date_start",                    "interval": "month",                    "format": "yyyy-MM-dd HH:mm:ss"                  }                }              }            }          }        }      }    }'