Python facets并基于facets进行一些过滤
我有一个关于facet和基于facet进行过滤的问题。 我知道这是一个重复的问题,但我找不到答案 我想知道如何在弹性搜索中实现相同的功能 让我们假设我有一个关于汽车和一些方面的索引-例如模型和 颜色 颜色 []红色10 []蓝色5 []绿色2 模型 []宝马4 []大众5 []福特8 如果我选择一个模型,我只想得到该模型的颜色面, 但我仍然希望得到所有模型的切面。例如: 颜色 []红色2 []蓝色2 []绿色1 模型 []宝马4 [x] 大众5 []福特8 我已经搜索过了,但没有找到关于这个用例的示例。这是吗 可能,如果是,如何筛选查询以获得这些结果Python facets并基于facets进行一些过滤,python,elasticsearch,lucene,elastic-stack,facet,Python,elasticsearch,Lucene,Elastic Stack,Facet,我有一个关于facet和基于facet进行过滤的问题。 我知道这是一个重复的问题,但我找不到答案 我想知道如何在弹性搜索中实现相同的功能 让我们假设我有一个关于汽车和一些方面的索引-例如模型和 颜色 颜色 []红色10 []蓝色5 []绿色2 模型 []宝马4 []大众5 []福特8 如果我选择一个模型,我只想得到该模型的颜色面, 但我仍然希望得到所有模型的切面。例如: 颜色 []红色2 []蓝色2 []绿色1 模型 []宝马4 [x] 大众5 []福特8 我已经搜索过了,但没有找到关于这个用例
向您致以亲切的问候我相信这一点在这里得到了多次回答,但让我们以您的具体例子为例 创建索引
PUT lalit
{
"mappings": {
"properties": {
"model": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
},
"color": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
}
吞下一些医生
POST lalit/_doc
{"color":"red","model":"bmw"}
POST lalit/_doc
{"color":"blue","model":"bmw"}
POST lalit/_doc
{"color":"red","model":"vw"}
POST lalit/_doc
{"color":"green","model":"vw"}
POST lalit/_doc
{"color":"blue","model":"ford"}
应用a+a组合
屈服
"aggregations" : {
"model_filtered_colors" : {
"doc_count" : 2,
"actual_aggs" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "green",
"doc_count" : 1
},
{
"key" : "red",
"doc_count" : 1
}
]
}
},
"all_models" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "bmw",
"doc_count" : 2
},
{
"key" : "vw",
"doc_count" : 2
},
{
"key" : "ford",
"doc_count" : 1
}
]
},
"all_colors" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "blue",
"doc_count" : 2
},
{
"key" : "red",
"doc_count" : 2
},
{
"key" : "green",
"doc_count" : 1
}
]
}
}
model_filtered_colors按颜色为您提供所有vw,而其他2个聚合则为您提供不带vw过滤器的全面总计。您的答案很好,但我需要一个功能lilke amazon facets a doing,如果我应用过滤器facet bucket。然后所选的bucket不会改变,但所有bucket都是其他的。同样,如果我从不同的bucket应用另一个过滤器,那么所选的bucket不会改变,但都是其他的。我读过关于post_过滤器和全局聚合的文章,但它们并没有像amazon或ebayYou那样更新facte,只需使用上面显示的2种agg类型,您就可以完成所有这些。再研究一下:
"aggregations" : {
"model_filtered_colors" : {
"doc_count" : 2,
"actual_aggs" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "green",
"doc_count" : 1
},
{
"key" : "red",
"doc_count" : 1
}
]
}
},
"all_models" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "bmw",
"doc_count" : 2
},
{
"key" : "vw",
"doc_count" : 2
},
{
"key" : "ford",
"doc_count" : 1
}
]
},
"all_colors" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "blue",
"doc_count" : 2
},
{
"key" : "red",
"doc_count" : 2
},
{
"key" : "green",
"doc_count" : 1
}
]
}
}