首页 文章

使用geo_polygon过滤器获取Tire / Elastic搜索中位于用户定义多边形内的所有属性

提问于
浏览
3

我正在研究一个使用ElasticSearch和轮胎的项目 . 我的网页上有一个谷歌 Map . 我希望在用户在 Map 上绘制一个必须由带有轮胎的弹性搜索获取的多边形时获取所有属性 . 我已经alreday得到多边形坐标现在我想写一个查询(tire.serach Block见下文),它将过滤多边形区域内的所有属性 . 我的数据库的属性表有经度和latitide列 . 我可以通过使用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

谢谢Ateq .

1 回答

  • 4

    就像是:

    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
    

    示例改编自Geo Polygon Filter上的Elasticsearch文档 .

相关问题