Search code examples
ruby-on-railselasticsearchsearchkick

How order searchkick search by distance?


@professional_services = 
  Professional::Service.search @keywords, where: {
    location: { 
      near: { lat: @cordinate[0], lon: @cordinate[1] }, 
      within: "100km"
    }
  }  

How order this search by distance?


Solution

  • I sort results by distance with the query:

    @professional_services =  
    Professional::Service.search "*", where: {
      location: {
        near: {lat: @cordinate[0], lon: @cordinate[1]}, within: "10000km"
      }
    }, 
    order: [{
      _score: :desc}, {_geo_distance: {location: "#{@cordinate[0]},  
      #{@cordinate[1]}", order: "asc",unit: "km"}
    }]