我已经看到了一些关于Elastic的分面搜索的例子,但是他们都事先知道你想要创建的分区的字段。在Eshop的网店中进行分面搜索
我应该如何工作,当我有一个多个类别的网上商店,其中值的属性在每个类别中都不相同?
有没有一种方法可以描述您的文档在运行查询时具有哪些属性(例如按类别过滤)?
我有这个疑问现在:
{
"from" : 0, "size" : 10,
"query": {
"bool" : {
"must" : [
{ "terms": {"color": ["red", "green", "purple"]} },
{ "terms": {"make": ["honda", "toyota", "bmw"]} }
]
}
},
"aggregations": {
"all_cars": {
"global": {},
"aggs": {
"colors": {
"filter" : { "terms": {"make": ["honda", "toyota", "bmw"]} },
"aggregations": {
"filtered_colors": { "terms": {"field": "color.keyword"} }
}
},
"makes": {
"filter" : { "terms": {"color": ["red", "green"]} },
"aggregations": {
"filtered_makes": { "terms": {"field": "make.keyword"} }
}
}
}
}
}
}
我怎样才能知道哪些领域我可以聚合。有没有办法在运行查询后描述文档的属性?所以我可以知道可能的领域,汇总,是。
这将返回属性的所有值,而不是所有的属性 – brechtvhb
我看到的。我误解了这个案子。可能是你可以使用https://www.elastic.co/guide/en/elasticsearch/reference/5.6/mapping-field-names-field.html?我的意思是做多个请求。一个得到领域,另一个来计算aggs ...可能很难。 – dadoonet