我在Elasticsearch中有数据。我想在要显示在UI上的多个字段上生成过滤器选项。
我在elasticsearch中有衣服的数据,在elasticsearch中有属性"Brand", "Color", "Price"
。
我想从elasticsearch获取适用的品牌,颜色和价格范围列表。
另外,我希望根据过滤器的选择来修改列表,例如,如果用户在品牌中选择了"nike"
,则不应获取"nike"
中不存在的颜色。
我的ES映射
{
"mappings":{
"products": {
"properties": {
"title": { "type": "text"},
"description": { "type": "text"},
"productCode": { "type": "keyword"},
"brand" : {"type":"keyword","fields": {"raw": {"type": "text"}}},
"color" : {"type":"keyword","fields": {"raw": {"type": "text"}}},
"category" : {"type":"keyword","fields": {"raw": {"type": "text"}}},
"price" : {"type":"double"},
"imageLink" : {"type":"keyword"}
}
}
}
}
我也愿意更改ES映射,因为我是从头开始构建它的。
答案 0 :(得分:1)
您要查找的内容在ES中称为aggregations。我将从Terms Aggregations
开始,这是一种存储桶聚合。
"brand"
的聚合示例如下:
GET <index_name>/products/_search
{
"aggs" : {
"brands" : {
"terms" : { "field" : "brand" }
}
}
}