为多个实体绑定设置 Elasticsearch 索引结构
简介
集成 Elasticsearch (ES )到现有的应用程序中可能是一项艰巨的任务。此对话解决了在处理遗留数据库中的多个实体绑定时设置 ES 索引结构的挑战。
数据库结构
提供的数据库结构呈现三个表: Products、Flags 和 flagsProducts,表示产品和标志之间的 N:M 关系。目标是在 ES 中复制此结构,同时优化高效查询。
推荐方法:扁平化
建议扁平化,而不是维持 N:M 关系结构并创建嵌入标志信息的产品文档。这种方法简化了查询并改进了数据访问。
产品文档结构
扁平化的产品文档将包含以下字段:
示例产品文档:
{ "id": "00c8234d71c4e94f725cd432ebc04", "title": "Alpha", "price": 589.0, "flags": ["Sellout", "Top Product"] } { "id": "018357657529fef056cf396626812", "title": "Beta", "price": 355.0, "flags": ["Discount"] }
产品映射类型
对应的ES 中的映射类型为:
PUT products { "mappings": { "product": { "properties": { "id": { "type": "string", "index": "not_analyzed" }, "title": { "type": "string" }, "price": { "type": "double", "null_value": 0.0 }, "flags": { "type": "string", "index": "not_analyzed" } } } } }
从数据库获取数据
要从数据库检索必要的数据以摄取到 ES 中,请使用以下 SQL 查询:
以上是如何设计N:M关系的Elasticsearch索引结构?的详细内容。更多信息请关注PHP中文网其他相关文章!