Я использую Elasticsearch на моем Rails APP trhough gem 'chewy'
.Rails - Elasticsearch - поиск по координатам с Chewy
У меня есть две модели: продукты и теги [отношение многих ко многим, управляемое через модель ProductTag].
Я определил ProductsIndex следующим образом:
Я могу успешно выполнить запрос ProductsIndex в мой контроллер с:
q = params[:q]
@products = ProductsIndex.filter { tags(:and) == [q] }.load
, который возвращает мне все объекты продукта с указанным тегом.
Мой вопрос: Как я могу запросить ProductIndex вернуть все объекты Product в радиусе 100Km из заданной пары координат (lat/lon)?
Я строго не нужно сортировать по расстоянию, но если вы включите его в ответ будет весьма признателен :)
редактировать
Я пытаюсь что-то вроде этого, но он не работает :
ProductsIndex.filter {
geo_distance: {
distance: '100km',
location: {
lat: 60.0951482712848,
lon: -86.4810766234584
}
}
}
я получил следующую ошибку синтаксиса
SyntaxError: (irb):10: syntax error, unexpected ':', expecting '}'
...uctsIndex.filter {geo_distance: { distance: '100km', l...
... ^