Elasticsearch-半径查询(8.x)
Elasticsearch 8.x 中,半径查询(radius query)通常用于地理位置查询,它允许你在指定的中心点周围指定半径内进行查询。
以下是一个使用Elasticsearch DSL (Domain Specific Language) 来执行地理位置半径查询的例子:
{
"query": {
"radius": {
"field": "location",
"radius": "100km",
"center": {
"lat": 40,
"lon": -70
}
}
}
}
在这个例子中,我们查询了一个名为 "location" 的地理位置字段,查询中心点在纬度40,经度-70的地点,半径为100公里内的所有文档。
请注意,这个查询必须在有地理位置数据的索引上执行,并且该索引在创建时应该指定了正确的字段类型(比如:"geo\_point" 或 "geo\_shape")。
在Elasticsearch 8.x中,地理位置查询API有了一些改进,你可以使用 geo_distance
查询代替 radius
查询,如下:
{
"query": {
"geo_distance": {
"distance": "100km",
"location": {
"lat": 40,
"lon": -70
}
}
}
}
这两种方式都可以实现同样的效果,但 geo_distance
是官方推荐的方式,并且在性能和功能上可能会更优秀。
评论已关闭