按弹性搜索中的多值字段中的值排序

时间:2014-07-09 11:42:27

标签: sorting scripting elasticsearch

我在文档中有一个带有整数的多值字段,例如

{
   values: [1,2,3,4,5]
}

我应用范围过滤器,例如从2到4并获取带有值的文档列表,包含2,3,4。 现在我想对结果进行排序,并首先返回包含3的文档。

我可以使用脚本排序来完成:

{
  sort:{
    _script: {
      script: "doc['values'].getValues().contains(3) ? 0 : 1",
      type: "number"
    }
  }
}

但我不喜欢它的性能,因为getValues()实际上返回了一个List,而contains方法是O(n)。

有更好的方法吗?

0 个答案:

没有答案