基于Elasticsearch中的位置和评级进行自定义排序

时间:2015-04-13 05:59:42

标签: sorting elasticsearch location

我们目前正在建立一个最好的"我们记录列表的方法,我们要求根据地理距离和评级对记录进行排序。

例如,距离为0-1Km的记录将根据较高的评级进行排序,1-2km的记录也将按较高的评级进行排序。但任何记录的地理距离为0.95公里,等级为7,另一记录的地理距离为1.1公里,评级为9.距离为0.95公里的记录将排在首位。因此,距离按1Km距离分组,然后根据评级对其进行排序。

如何直接在elasticsearch上应用此功能。我想它需要自定义排序脚本吗?

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

按照'评分'

对所有结果进行排序

http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-sort.html

应用地理距离agg:

http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-geodistance-aggregation.html

在geo agg中,嵌入顶部命中以查看实际结果:

http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-top-hits-aggregation.html

如果这不会导致每个地理位置区域中的热门排名按“等级排序”进行排序,则将查询设为一个功能得分查询,其得分仅为评分。

http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html