【发布时间】:2022-01-06 09:04:45
【问题描述】:
我在 ElastiSearch 中有以下数据结构。
[{
"name": "Kapil",
"age": 32,
"hobbies": ["Cricket", "Football", "Swimming"]
},
{
"name": "John",
"age": 33,
"hobbies": ["Baseball", "Football", "Swimming"]
},
{
"name": "Vick",
"age": 30,
"hobbies": ["Baseball", "Karate", "Swimming"]
}]
我想按以下顺序从数据中获取所有记录:
- 获取所有以
Football为爱好的用户,并按年龄排序。 - 获取所有其他用户按年龄降序排序。
所以期待结果按照约翰、卡皮尔和维克的顺序。
我使用下面的查询来获得 #1 的结果。
{
"size": 500,
"query": {
"bool": {
"must": [
{
"match_phrase": {
"hobbies.keyword": "Football"
}
}
]
}
},
"sort": [
{
"age": {
"order": "desc"
}
}
]
}
并在下面用于第 2 点
{
"size": 500,
"query": {
"bool": {
"must_not": [
{
"match_phrase": {
"hobbies.keyword": "Football"
}
}
]
}
},
"sort": [
{
"age": {
"order": "desc"
}
}
]
}
有了上面,我无法维护分页逻辑。它还需要我分别执行这两个查询。有人可以帮助如何实现这一目标吗?
【问题讨论】:
标签: java elasticsearch