按地理空间数据排序并根据字段向上移动特定记录 - ElasticSearch DSL DRF

Ordering by geospatial data and moving up specific records based on a field - ElasticSearch DSL DRF

我目前要解决的情况是 GeoSpatialOrderingFilterBackendElasticSearch 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')

我正在寻找一种将精选记录放在顶部的方法;但保持记录的顺序。

GeoSpatialOrderingFilterBackendget_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)