使用过滤器在轮胎/弹性搜索中获取用户定义多边形内geo_polygon所有属性



我正在做一个使用 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 关于地理多边形过滤器的文档。

最新更新