首页 > 解决方案 > 需要将缺货项目移动到弹性搜索中的结果集末尾

问题描述

我有以下搜索查询

{ 
   "index":"index",
   "body":{ 
      "sort":{ 
         "sort_order":[ 
            { 
               "order":"asc",
               "missing":"_last"
            }
         ]
      },
      "query":{ 
         ....
         ....
      }
   }
}

这将返回搜索查询的产品列表,并根据名为 的字段对结果进行排序sort_order。如果该sort_order字段为空,它会将这些项目推送到结果集的末尾。

样本产品记录

{
    "id": 1,
    "name": "product A",
    "variants": [
        {
            "variant_id": 1,
            "stock": 114,
            "published": 1,
        }
    ],
    "sort_order": 1
}, 

在这里您可以看到stock值为 114 的字段,它描述了可用商品的数量(如果库存为零,我们在前端将其显示为“缺货”),一个产品也可以有多个变体。

我想要达到什么目的?

我需要将库存等于的项目推送到0结果集的末尾,就像sort参数已经对sort_order字段所做的那样。(不首选基于stock字段的排序,因为它也会弄乱其他相关项目。)我怎样才能做到这一点?

我想到的一件事是以某种方式将_score零库存的项目设置null为结果集的末尾。但也不知道如何实现这一目标。任何解决它的提示,非常感谢。

标签: phplaravelsortingelasticsearch

解决方案


推荐阅读