Elasticsearch地理距离查询范围

时间:2018-09-25 20:47:54

标签: elasticsearch

您好,我正在尝试从弹性搜索中返回与搜索用户相距range of 2km to 4km的用户。 我用下面的查询 `

{ 
  "size": 1000,
  "from": 0,
  "_source": "user_id",
  "query":{

    "bool":{
        "must_not": {
        "terms": {
            "user_id": []
        }
    },
      "filter":[
        {  
          "geo_distance_range":{  
            "from":"2km",
            "to": "4km",
            "location":{  
              "lon":-122.4194,
              "lat":37.7749
            }
          }
        } 
      ]
    }
  }
}`

此查询为deleted in elastic search version 6.3,这是我使用的版本。 谁能帮我解决弹性搜索6.3中的这个用例吗?汇总仅返回该范围内的用户数,但我想返回该范围内所有用户的完整结果。

1 个答案:

答案 0 :(得分:1)

我无法对此进行测试,但是您应该能够将mustmust_not子句与geo_distance组合在一起似乎很合理:

"query": {
  "bool": {
    "must_not": {
      "terms": {
        "user_id": []
      },
      "geo_distance": {
        "distance": "2km",
        "location": [-122.4194, 37.7749]
      }
    },
    "must": {
      "geo_distance": {
        "distance": "4km",
        "location": [-122.4194, 37.7749]
      }
    }
  }
}