使用Searchkick进行地理空间搜索以查找用户

时间:2014-03-10 22:12:03

标签: ruby-on-rails ruby-on-rails-4 elasticsearch

我刚开始在我的Rails网络服务中使用Searchkick,目前我正在测试。我希望使用that在某个位置的某个周边检索用户。

对于我的测试,我有一个User对象(带有电子邮件,名称......)和一个Position对象(具有经度,纬度和对一个用户的引用)。用户与位置有很多关系。

目前我的立场看起来像

class Position < ActiveRecord::Base
  belongs_to :User
  searchkick locations: ["location"]

  def search_data
    attributes.merge location: [latitude, longitude]
  end
end

我尝试做像

这样的研究
Position.search *,  where: {location: {near: [50.632049, 3.068322], within: "100mi"}}

但是我收到以下错误

nested: QueryParsingException[[positions_development_20140310223244065] failed to find geo_point field [location]]; }]","status":400}

我不知道到底要做什么。 (我刚开始使用rails和弹性搜索) 所以,如果有人能给我一个更好的解释,我就接受了!感谢的

1 个答案:

答案 0 :(得分:3)

确保在更改searchkicksearch_data方法后重新编制索引。

Position.reindex