背景
经常将 ElasticSearch (ES) 与遗留应用程序集成由于数据结构和索引要求的差异带来了挑战。对于复杂的关系模式,非规范化数据和展平实体可以提高性能并简化查询。
问题:
如何展平具有多个实体绑定(n :m 关系)以在 ES 中实现最佳索引?
解决方案:
1.反规范化数据:
创建包含所有相关数据的产品文档,包括嵌入的相关实体数组。下面是一个示例架构:
{ "id": "00c8234d71c4e94f725cd432ebc04", "title": "Alpha", "price": 589.0, "flags": ["Sellout", "Top Product"] }
2。映射类型:
配置映射类型以匹配新架构:
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" } } } } }
3. SQL 查询:
使用连接相关实体并连接标志标题的查询从数据库检索数据:
以上是如何通过多个实体绑定优化ElasticSearch索引结构?的详细内容。更多信息请关注PHP中文网其他相关文章!