创建查询,该查询首先对某些类别进行排序并返回

时间:2019-07-17 19:41:40

标签: reactjs react-native elasticsearch

假设我有3个类别:A,B和C。我希望先显示A,然后显示B,最后显示C。

某些类别具有布尔值,这也将赋予它优先级。我们称其为“ isPriority”。在下一行的示例中,我们为*指定“ isPriority”

因此顺序应为:A *,A,B *,B,C *,C。

我认为可以为每个类别设置权重,如果isPriority为true,则将权重相乘。这是我的代码:

 query: {
    function_score: {
      query: {
        match_all: {},
      },
      functions: [
        {
          filter: {
            match: {
              category: 'A',
            },
          },
          weight: 100,
        },
        {
          filter: {
            match: {
              category: 'B',
            },
          },
          weight: 90,
        },
        {
          filter: {
            match: {
              category: 'C',
            },
          },
          weight: 80,
        },
        {
          filter: {
            match: {
              isPriority: true,
            },
          },
          weight: 2,
        },
      ],
      score_mode: 'multiply',
    },
  },
};

是的,返回的结果按以下顺序排序:

B*, B*, B*, C*, C*, B*, A*, B*

我想念什么?

谢谢!

0 个答案:

没有答案