我在Elastic中见过一些关于分面搜索的例子,但它们都事先知道你想要创建哪些字段。
当我有一个具有多个类别的网络商店,其中每个类别的值的属性都不同时,我应该如何工作?
有没有一种方法来描述当你运行查询时你的文档有什么属性(例如按类别过滤)?
我现在有这样的疑问:
{
"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"} }
}
}
}
}
}
}我如何知道我可以在哪些字段上进行聚合。在运行查询之后,有没有一种方法来描述文档的属性?这样我就可以知道可以聚合的字段是什么。
发布于 2017-10-18 21:37:59
现在,我将文章的所有属性存储在一个数组中,我可以像这样快速地聚合它们:
{
"size": 0,
"aggregations": {
"array_aggregation": {
"terms": {
"field": "properties.keyword",
"size": 10
}
}
}
}这是朝着正确方向迈出的一步,但这样我就不知道属性的类型是什么了。
下面是一个示例对象
"price": 10000,
"color": "red",
"make": "honda",
"sold": "2014-10-28",
"properties": [
"price",
"color",
"make",
"sold"
]发布于 2017-10-18 18:02:46
你可以使用过滤器聚合,它将过滤,然后在里面创建一个术语聚合?
https://stackoverflow.com/questions/46807393
复制相似问题