嘿,我正在开发一个应用程序,该应用程序需要基于距离过滤器根据所提供的经度显示位置。我正在通过弹性搜索提供数据。我可以使用geo_distance查询轻松地提供数据,以查找地理点在中心点指定距离内的文档。但是我无法搜索大于x公里的数据
弹性搜索版本-6.6
映射-
{
"mappings": {
"_doc": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
}
要获得少于x公里的地方,我会使用此查询
{
"query": {
"bool" : {
"filter" : {
"geo_distance" : {
"distance" : "15km",
"location" : {
"lat" : 40.1111,
"lon" : 40.1111
}
}
}
}
}
}
要使用什么查询来获取大于x km的结果,地理过滤器是否提供任何查询参数来获取大于x距离的数据? 我可以结合使用filter与must_not吗?
答案 0 :(得分:2)
您只需将filter
替换为must_not
,即可实现所需的功能:
{
"query": {
"bool" : {
"must_not" : {
"geo_distance" : {
"distance" : "15km",
"location" : {
"lat" : 40.1111,
"lon" : 40.1111
}
}
}
}
}
}