我正在做一个使用 ElasticSearch 和 tire 的项目。我的网页上有一个谷歌地图,我想获取用户在地图上绘制多边形时必须由 Elastic 搜索使用轮胎获取的所有属性。我已经得到了多边形坐标,现在我想在(tire.serach 块见下文)中编写一个查询,该查询将过滤多边形区域内的所有属性。我的数据库的属性表有经度和纬度列。我可以使用 Postgis 适配器来做到这一点,但我需要知道将在轮胎/弹性搜索中执行此操作的查询语法。
def self.search(params={})
tire.search(load: true, page: params[:page], per_page: 50) do |search|
syntax of the filter query that will fetch all properties within user defined polygon area..???
end
end
谢谢阿特克。
像这样:
Tire.search 'venues' do
query do
filtered do
query { all }
filter :geo_polygon, location: { points: [
{lat: 40, lon -70},
{lat: 30, lon -80},
{lat: 20, lon -90}
]
}
end
end
end
示例改编自 Elasticsearch 关于地理多边形过滤器的文档。