我正在尝试使用以下查询获取到当前位置的最近位置,并且运行得非常好。
{
"from": 0,
"size": 3,
"query": {
"filtered": {
"query": {
"matchAll": {}
},
"filter": {
"exists": {
"field": "pin"
}
}
}
},
"sort": [
{
"_geo_distance": {
"pin": {
"lat": 52.51515,
"lon": 13.38019
},
"order": "asc",
"unit": "km",
"distance_type":"arc"
}
}
]
}
此外,我想将上面的查询与bool查询结合起来,因为我不想在我的结果列表中拥有当前位置(这是最接近的位置,因为_geo_distance的数据是当前位置数据)。我知道我可以简单地设置为1,大小设置为4,但我想知道如何将上面的查询与bool one结合起来。
"bool": {
"must_not": [
{
"query": {
"matchAll": {
"slug": "adlon-hotel"
}
}
}
]
}
我刚刚阅读了文档,但我没有复制如何结合两个查询。
谢谢。
答案 0 :(得分:1)
我刚才自己回答了
{
"from": 0,
"size": 3,
"query": {
"filtered": {
"query": {
"bool": {
"must_not": [
{
"match": {
"slug": "adlon-hotel"
}
}
]
}
},
"filter": {
"exists": {
"field": "pin"
}
}
}
},
"sort": [
{
"_geo_distance": {
"pin": {
"lat": 52.51515,
"lon": 13.38019
},
"order": "asc",
"unit": "km",
"distance_type": "arc"
}
}
]
}
并确保' slug'没有分析。