我是Elastic Search的新手,如果答案很明显,请原谅我。
我修改了一个查询,以使用aggs显示“不同”的结果。但是,在添加aggs之后,size
似乎不再起作用-无论我将大小设置为多少,它总是返回10个结果。
有人会知道我如何同时使用aggs和size吗?
我的查询是:
{
"size": "15",
"from": "0",
"query": {
"bool": {
"filter": [
{
"term": {
"category": "Cars"
}
},
{
"term": {
"location": "Sydney"
}
},
{
"term": {
"status": true
}
}
]
}
},
"sort": [
{
"_score": "desc"
},
{
"brand": "asc"
}
],
"aggs": {
"brand": {
"terms": {
"field": "brand",
"order": {
"price": "asc"
}
},
"aggs": {
"brand": {
"top_hits": {
"size": 1,
"sort": [
{
"price": {
"order": "asc"
}
}
]
}
},
"price": {
"min": {
"field": "price"
}
}
}
}
}
}
答案 0 :(得分:1)
在查询之前提到的size参数,用于设置查询命中的大小,并且不会影响聚合存储桶的大小。 就像您在子聚合中提到的那样,在父聚合中使用size参数为“ size”:1 修改后的查询以获得前10个aggs:
{
"size": "15",
"from": "0",
"query": {
"bool": {
"filter": [
{
"term": {
"category": "Cars"
}
},
{
"term": {
"location": "Sydney"
}
},
{
"term": {
"status": true
}
}
]
}
},
"sort": [
{
"_score": "desc"
},
{
"brand": "asc"
}
],
"aggs": {
"brand": {
"terms": {
"field": "brand",
"size": 10,
"order": {
"price": "asc"
}
},
"aggs": {
"brand": {
"top_hits": {
"size": 1,
"sort": [
{
"price": {
"order": "asc"
}
}
]
}
},
"price": {
"min": {
"field": "price"
}
}
}
}
}
}
希望这会有所帮助。