1
我該如何在elasticsearch中編寫這個mysql查詢?如何在elasticsearch中編寫此查詢?
SELECT *,count(products.store_id)
FROM stores
INNER JOIN products
ON stores.store_id=products.store_id
group by stores.store_id;
我該如何在elasticsearch中編寫這個mysql查詢?如何在elasticsearch中編寫此查詢?
SELECT *,count(products.store_id)
FROM stores
INNER JOIN products
ON stores.store_id=products.store_id
group by stores.store_id;
Elasticsearch是不完全是一個數據庫,它是一個搜索引擎,因此它支持非常有限JOIN操作(parent-child queries)。
如果你想執行上面的查詢,那麼你將不得不重做模式並嘗試將數據放在一個索引中(即使它不在2NF/3NF中也沒關係)。也許你可以將store_id與每個產品文檔一起編入索引。
現在,回到查詢,如果你想解決上面的查詢讓我們說一個索引,那麼你可以使用TERMS
aggregation做到這一點。它會給你按商店編號分組的產品計數,請求將如下所示:
$ 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"
}
}
}
}'