我有两个要保存到单个 flex 索引中的mysql表。
表1:Product
具有id
,name
...等
表2:ProductWarehouse
具有productId
,warehouseId
,qtyAvailable
...等Product
一对多 ProductWarehouse
我的问题是,如何将每个ProductWarehouse
的product
记录保存为数组?
如果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
}