按地理空间数据排序并根据字段向上移动特定记录 - ElasticSearch DSL DRF
Ordering by geospatial data and moving up specific records based on a field - ElasticSearch DSL DRF
我目前要解决的情况是 GeoSpatialOrderingFilterBackend 从 ElasticSearch DSL - DRF
使用的情况,它根据位置(纬度、经度)对文档进行排序,这在 return 给出了一个 elasticsearch_dsl.search.Search
查询集——按照它应该的顺序排列;尽管我有一些情况 featured
因此想将它们移动到查询集的顶部。
场景(原样):
Record 1, Location X, Featured False
Record 3 Location Y, Featured False
Record 2, Location Z, Featured True
预计:
Record 1, Location Z, Featured True
Record 2, Location X, Featured False
Record 3, Location Y, Featured False
之后对查询集进行排序(如下所示)将特色放在顶部;尽管打乱了整个 geospatial/location 排序。
result = super().filter_queryset(request, queryset, view).sort('-featured')
我正在寻找一种将精选记录放在顶部的方法;但保持记录的顺序。
GeoSpatialOrderingFilterBackend
在 get_ordering_query_params
函数中提供排序查询参数。当您基于 featured
再次订购时,还要考虑查询中的那些参数。
geo_ordering_fields = self.get_ordering_query_params(request, view)
result = super().filter_queryset(request, queryset, view).sort('-featured', geo_ordering_fields)
我目前要解决的情况是 GeoSpatialOrderingFilterBackend 从 ElasticSearch DSL - DRF
使用的情况,它根据位置(纬度、经度)对文档进行排序,这在 return 给出了一个 elasticsearch_dsl.search.Search
查询集——按照它应该的顺序排列;尽管我有一些情况 featured
因此想将它们移动到查询集的顶部。
场景(原样):
Record 1, Location X, Featured False
Record 3 Location Y, Featured False
Record 2, Location Z, Featured True
预计:
Record 1, Location Z, Featured True
Record 2, Location X, Featured False
Record 3, Location Y, Featured False
之后对查询集进行排序(如下所示)将特色放在顶部;尽管打乱了整个 geospatial/location 排序。
result = super().filter_queryset(request, queryset, view).sort('-featured')
我正在寻找一种将精选记录放在顶部的方法;但保持记录的顺序。
GeoSpatialOrderingFilterBackend
在 get_ordering_query_params
函数中提供排序查询参数。当您基于 featured
再次订购时,还要考虑查询中的那些参数。
geo_ordering_fields = self.get_ordering_query_params(request, view)
result = super().filter_queryset(request, queryset, view).sort('-featured', geo_ordering_fields)