让我们说我想让用户输入城市的名称和物品的价格(任何东西)
我需要知道该城市中(事物)的百分比,其中某个字段的价值低于输入的值:
我可以搜索这样的城市:
"query": {
"filtered": {
"query": {
"match": {
"city": "Paris"
}
}
}
},
但我不知道如何做其他要求,你能帮帮我吗?
答案 0 :(得分:0)
Suposedly percentile-ranks-aggregation旨在实现这一目标
示例:
post <index>/<type>/_search
{
"filter": {
"term": {
"city": "blore"
}
},
"aggs": {
"rank": {
"percentile_ranks": {
"values": [
31
],
"field": "price"
}
}
},
"size": 0
}
但是在测试时我发现它有问题,我相信它与issue有关。
因此,一旦使用类似如下的查询获取文档计数,就可以计算客户端的百分比:
post _search
{
"filter": {
"term": {
"city": "blore"
}
},
"aggs": {
"less_price_filter": {
"filter": {
"range": {
"price": {
"lt": 60
}
}
}
}
},
"size": 0
}
<强>响应强>
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 0,
"hits": []
},
"aggregations": {
"less_price_filter": {
"doc_count": 2
}
}
}
可以通过划分doc_count*100/total
在客户端计算百分比。