mysql - 使用 Logstash 将两个 mysql 表中的数据与单个 Elasticsearch 索引同步
问题描述
我有两个要保存到单个弹性索引中的 mysql 表。
表 1:Product
有id
,name
...等
表 2:ProductWarehouse
有productId
, warehouseId
, qtyAvailable
... 等
Product
一对多 ProductWarehouse
我的问题是,如何将ProductWarehouse
每个记录保存为product
数组?
如果ProductWarehouse
修改了,如何在 Elastic index 上体现?
最佳做法是什么?
Elastic 中的产品索引应如下所示:
{
"id",
"name": ...,
"warehouses": [
{"warehouseId": 1, "qtyAvailable": 3},
{"warehouseId": 10, "qtyAvailable": 30}
]
}
解决方案
我的建议是为您需要的结构创建一个 MySQL 视图:Product joins with ProductWarehouse。此视图仅用于同步,然后使用 Logstash 将此视图同步到 ElasticSearch。
然后你可以使用 ElasticSearsh 索引作为这个结构:
{
"id",
"name": ...,
"warehouses": 1
}
{
"id",
"name": ...,
"warehouses": 3
}
推荐阅读
- scala - 在 Spark Scala 中将 DateTime 转换为 Date
- java - 使用 Angular 7 作为前端,后端作为 Java 遇到 CORS 错误
- python - Django中的一对多查询
- python - 如何替换 numpy 数组中的值?
- angular - cdk 使用 HTML 表格进行虚拟滚动
- javascript - 使用 Native JavaScript,如果对象具有特定的 CSS 类,则更改其标题属性
- javascript - 使用服务依赖在 Angular 中进行测试
- python - Pyqt5:QtableWidgetItem“无”
- assembly - 在过程中操作运行时堆栈
- c++ - 如何转发声明 boost::spirit 规则?