Elasticsearch: agregação em objetos aninhados filtrados para encontrar valores exclusivos

Eu tenho uma matriz de objetos (tags) em cada documento no Elasticsearch 5:

{
    "tags": [
        { "key": "tag1", "value": "val1" },
        { "key": "tag2", "value": "val2" },
        ...
    ]
}

Agora, quero encontrar valores de tag exclusivos para uma determinada chave de tag. Algo semelhante a esta consulta SQL:

SELECT DISTINCT(tags.value) FROM tags WHERE tags.key='some-key'

Eu vim para este DSL até agora:

{
    "size": 0,
    "aggs": {
        "my_tags": {
            "nested": {
                "path": "tags"
            },
            "aggs": {
                "filter" : { "terms": { "tags.key": "tag1" } },
                "aggs": {
                    "my_tags_values": {
                        "terms" : {
                            "field" : "tags.value",
                            "size": 9999
                         }
                    }                   
                }
            }
        }
    }
}

Mas está me mostrando este erro:

[terms] unknown field [tags.key], parser not found.

Essa é a abordagem correta para resolver o problema? Obrigado pela ajuda.

Nota: Eu declarei otags campo como um campo aninhado no meu mapeamento.

questionAnswers(2)

yourAnswerToTheQuestion