我正在尝试按地理距离对地理距离聚合进行排序。我已经看到您可以放置距离环,但我正在尝试从最近到最远进行排序(如代码中所尝试,但不起作用)
var searchResponse = _client.Search<CitiesModel>(s => s
.Size(0)
.Aggregations(agg =>
agg.GeoDistance("distance", g => g
.Field(p => p.Propriete.Source.Localisation.gps)
.DistanceType(GeoDistanceType.Arc)
.Unit(DistanceUnit.Kilometers)
.Origin(search.Result[0].Centre.Coordinates[1], search.Result[0].Centre.Coordinates[0])
.Ranges(r => r.To(25))
.Aggregations(agg =>
agg.Terms("postCode", ts => ts
.Field(f =>
f.Propriete.Source.Location.PostalCode.Suffix("keyword"))
.Size(1000)
.Aggregations(ag => ag
.Terms("cities", ts => ts
.Field(f => f.Propriete.Source.Location.City.Suffix("keyword"))
)
)
)
)
)
.BucketSort("distance", bs => bs
.Sort(st => st
.GeoDistance(gd => gd
.Field(f => f.Propriete.Source.Localisation.gps)
.DistanceType(GeoDistanceType.Arc)
.Order(SortOrder.Ascending)
.Points(new GeoLocation(search.Result[0].Centre.Coordinates[1], search.Result[0].Centre.Coordinates[0]))
.Unit(DistanceUnit.Kilometers))
)))
);