我对这种弹性搜索比较陌生。因此,我以下述方式将数据存储在弹性搜索中:
[{
"name": "user1",
"city": [{
"name": "city1",
"count": 18
},{
"name": "city2",
"count": 15
},{
"name": "city3",
"count": 10
},{
"name": "city4",
"count": 5
}]
},{
"name": "user2",
"city": [{
"name": "city2",
"count": 2
},{
"name": "city5",
"count": 5
},{
"name": "city6",
"count": 8
},{
"name": "city8",
"count": 15
}]
},{
"name": "user3",
"city": [{
"name": "city1",
"count": 2
},{
"name": "city5",
"count": 5
},{
"name": "city7",
"count": 28
},{
"name": "city2",
"count": 1
}]
}]
所以,我想做的是,找出那些在他们的城市列表中有“city2”的用户,并根据“city2”的“count”对数据进行排序。
这是我尝试过的查询:
{
"sort": [{
"city.count": {
"order" : "desc"
}
}],
"query": {
"bool": {
"must": [
{"match": {"city.name": "city2"}}
]
}
}
}
所以我无法弄清楚排序部分如何去做! 排序部分正在考虑基于过滤器的所有城市的所有“计数”值,但我只想根据“city2”的“计数”进行排序。
任何形式的帮助将不胜感激。提前致谢。