Elasticsearchは、それが検索エンジンですので、それは非常に限られたサポート業務(parent-child queries)に参加、正確データベースではありません。
上記のクエリを実行する場合は、スキーマを再作成して1つのインデックスにデータを格納する必要があります(2NF/3NFにない場合でも問題ありません)。たぶん、各製品文書と共にstore_idを索引付けすることができます。
ここで、上記のクエリを実行したい場合は、TERMS
aggregationを使用して1つのインデックスを実行します。店舗IDごとにグループ化された商品の数が表示されます。
$ curl -XPOST 'http://localhost:9200/products/_search?search_type=count' -d '{
"query" : {
"filtered" : {
"filter" : {
"bool" : {
"must" : [
{ "term" : {"product_type" : "sometype"}}
]
}
}
}
},
"aggs" : {
"products" : {
"terms" : {
"field" : "store_id"
}
}
}
}'