我有两张mysql表,想保存到一个Elastic索引中。
表1: Product
有 id
, name
.等。
表2.ProductWarehouse
已 productId
, warehouseId
, qtyAvailable
等
Product
一对多 ProductWarehouse
我的问题是,如何保存 ProductWarehouse
纪录,每个 product
作为一个数组?
如果是 ProductWarehouse
被修改,如何在弹性指数上反映出来?
最好的做法是什么?
Elastic中的Product索引应该是这样的。
{
"id",
"name": ...,
"warehouses": [
{"warehouseId": 1, "qtyAvailable": 3},
{"warehouseId": 10, "qtyAvailable": 30}
]
}
我的建议是创建一个你所需要的结构的MySQL视图。Product joins与ProductWarehouse。这个视图只是为了在同步中使用,然后使用Logstash从这个视图同步到ElasticSearch。
然后你可以使用ElasticSearsh索引作为这个结构。
{
"id",
"name": ...,
"warehouses": 1
}
{
"id",
"name": ...,
"warehouses": 3
}