【发布时间】:2021-03-14 12:11:43
【问题描述】:
我有一个产品目录,其中每个产品的索引如下(从http://localhost:9200/products/_doc/1 查询)作为示例:
{
"_index": "products_20201202145032789",
"_type": "_doc",
"_id": "1",
"_version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
"_source": {
"title": "Roncato Eglo",
"description": "Amazing LED light made of wood and description continues.",
"price": 3990,
"manufacturer": "Eglo",
"category": [
"Lights",
"Indoor lights"
],
"options": [
{
"title": "Mount type",
"value": "E27"
},
{
"title": "Number of bulps",
"value": "4"
},
{
"title": "Batteries included",
"value": "true"
},
{
"title": "Ligt temperature",
"value": "warm"
},
{
"title": "Material",
"value": "wood"
},
{
"title": "Voltage",
"value": "230"
}
]
}
}
每个选项都包含不同的值,所以有很多Mount type值,Light temperature值,Material值等等。
如何创建一个聚合(过滤器),让客户可以在各种安装类型选项之间进行选择:
[ ] E27
[X] E14
[X] GU10
...
或者让他们从显示为复选框的不同材料选项中进行选择:
[X] Wood
[ ] Metal
[ ] Glass
...
创建存储桶后,我可以在前端处理它。我正在努力为这些选项创建不同的存储桶。
我已经成功地为Category、Manufacturer 和其他基本的聚合创建并显示和使用。这些产品选项存储在数据库中的has_many_through 关系中。我正在使用 Rails + searchkick gem,但它们允许我为弹性搜索创建原始查询。
【问题讨论】:
标签: ruby-on-rails elasticsearch filter aggregation searchkick