Elasticsearch搜索返回可用过滤器及MongoDB Schema调整咨询
Elasticsearch搜索实现与MongoDB Schema优化咨询
我是Elasticsearch新手,在查询实现上需要帮助,同时想确认我的MongoDB Schema是否需要调整。
我希望实现这样的Elasticsearch搜索功能:根据查询条件返回匹配的可用产品,同时返回可用于后续筛选的可用过滤器,期望的返回格式如下:
{ "products": [{...}, {...}, ...], "filters": [ ... ] }
现有MongoDB Schema
Product Schema
{ "title": "...", "description": "...", "categoryId": ObjectId, "variants": [ variant1ID, variant2ID ], ... // 其他字段 }
Variant Schema
{ "product": ObjectId, "image": "...", "price": ..., "attributes": [ "SIZE-XL", // 注:这些是facetId,我可以把它们转换为 {name:"SIZE", value:"XL"} 格式 "COLOR-BLUE", .... // 其他属性 ] }
我的思考与Elasticsearch存储方案设想
最初我打算基于类别获取过滤器,因为每个类别有固定的facet,但后来意识到搜索查询不一定局限于特定类别。
我设想将数据按以下格式存入Elasticsearch:每个变体作为单独的文档存储,并附带所属产品的标题和描述,以此提升搜索速度和便捷性:
{ "productId": "...", "title": "...", "description": "...", "categoryId": "....", "image": "...", "variantId": "...", "price": "...", "attributes": [ { "name": "SIZE", "value": "XL" }, { "name": "COLOR", "value": "BLUE" }, .... // 其他属性 ] }
现想咨询:
- 这个Elasticsearch存储方案是否可行?
- 我的MongoDB Schema是否需要调整?
内容的提问来源于stack exchange,提问作者Abdul Kabeer
相关产品推荐
相关产品推荐

