我有两个要保存到单个 flex 索引中的mysql表。

表1:Product具有idname ...等

表2:ProductWarehouse具有productIdwarehouseIdqtyAvailable ...等
Product 一对多 ProductWarehouse
我的问题是,如何将每个ProductWarehouseproduct记录保存为数组?

如果ProductWarehouse被修改,如何在 flex 索引上反射(reflect)出来?

最佳做法是什么?

Elastic中的产品索引应类似于:

{
 "id",
 "name": ...,
 "warehouses": [
   {"warehouseId": 1, "qtyAvailable": 3},
   {"warehouseId": 10, "qtyAvailable": 30}
 ]
}

最佳答案

我的建议是创建所需结构的MySQL View :产品与ProductWarehouse联接。该 View 仅用于Sync,然后使用Logstash从该 View 同步到ElasticSearch。

然后,您可以使用ElasticSearsh索引作为此结构:

{
 "id",
 "name": ...,
 "warehouses": 1
}
{
 "id",
 "name": ...,
 "warehouses": 3
}

10-07 17:59