Django haystack LocationField保存为字符串

时间:2016-04-24 12:37:19

标签: django elasticsearch django-haystack

我正在使用Django 1.8.5,haystack 2.4.1和elasticsearch 1.7。这个问题可能与this question重复,但问题在于弹性搜索2关于映射的根本变化,但问题的根源完全不同,因此我创建了一个新问题。

我想为我的模型添加基于地理位置的搜索。为此目的,这些是我所做的改变:

在我的可搜索模型中:

latitude = models.FloatField(blank=True, null=True)
  longitude = models.FloatField(blank=True, null=True)
  def get_location(self):
            return Point(self.latitude or 1000, self.longitude or 1000)

在search_indexes.py中:

location = indexes.LocationField(model_attr='get_location')

通过运行./manage.py build_index,我们希望更新映射。我检查了映射,但令人惊讶的是,位置字段已保存为string而不是geo_point。因此,我遇到了dwithin过滤器的问题,无法完成工作。

我知道我可以通过直接查询弹性手动创建映射,但我希望haystack通过search_indexes.py来完成。因此,干草堆有没有解决这个问题的方法?我需要尽快完成它。

0 个答案:

没有答案