【发布时间】:2021-11-19 02:05:45
【问题描述】:
我正在开发一个电子商务应用程序。目录数据由 Elastic Search 提供。 我有已在 Elastic Search 中编入索引的 Product 文档。
文档看起来像这样(为了更好的可读性,排除了几个字段):
{
"title" : "Product Name",
"volume" : "200gm",
"brand" : {
"brand_code" : XXXX,
"brand_name" : "Brand Name"
},
"@timestamp" : "2021-08-26T08:08:11.319Z",
"store" : [
{
"physical_unit" : 0,
"default_price" : 115.0,
"_id" : "1234_111",
"product_code" : "1234",
"warehouse_code" : 111,
"available_unit" : 100
}
],
"category" : {
"category_code" : 987,
"category_name" : "CategoryName",
"category_url_link" : "CategoryName",
"super_category_name" : "SuperCategoryName",
"parent_category_name" : "ParentCategoryName"
}
}
上述文档中的 store 对象是 ES Query 查找价格并确定商品是否有货或缺货的对象。
我想添加更多子对象来存储(基本上来自多个库存的数据)。每个产品最多可以有 150 多个子对象。
最终,产品文档将看起来像这样,多个库存数据映射到特定文档。
{
"title" : "Product Name",
"volume" : "200gm",
"brand" : {
"brand_code" : XXXX,
"brand_name" : "Brand Name"
},
"@timestamp" : "2021-08-26T08:08:11.319Z",
"store" : [
{
"physical_unit" : 0,
"default_price" : 115.0,
"_id" : "1234_111",
"product_code" : "1234",
"warehouse_code" : 111,
"available_unit" : 100
},
{
"physical_unit" : 0,
"default_price" : 125.0,
"_id" : "1234_112",
"product_code" : "1234",
"warehouse_code" : 112,
"available_unit" : 100
},
{
"physical_unit" : 0,
"default_price" : 105.0,
"_id" : "1234_113",
"product_code" : "1234",
"warehouse_code" : 113,
"available_unit" : 100
}
Upto N no of stores
],
"category" : {
"category_code" : 987,
"category_name" : "CategoryName",
"category_url_link" : "CategoryName",
"super_category_name" : "SuperCategoryName",
"parent_category_name" : "ParentCategoryName"
}
}
功能要求:
- 对于任何产品,我们应该显示所有仓库的最低价格。 对于 EX:如果特定产品有 50 个商店映射到它,则 Elastic Search 查询应该查看嵌套对象并获取所有 50 个商店中最低的值(如果项目可用)。
- 性能不应降低。
挑战:
- 如果我们开始为每个产品存储这么多商店,数据将会相当高。这会是个问题吗?
- 从嵌套文档中提取最低价格的有效方法是什么?
- 构面如何在嵌套文档中工作?就像我应用价格范围过滤器 ES 拾取之前未显示的数据一样。 (它可能会从其他商店中挑选与范围匹配的数据)
我们使用模板查询ES,Elastic Search的版本是6.0。 提前致谢!!
【问题讨论】:
标签: elasticsearch