elasticsearch,Sorting,Scripting,elasticsearch" /> elasticsearch,Sorting,Scripting,elasticsearch" />

Sorting elasticsearch中多值字段中的值排序

Sorting elasticsearch中多值字段中的值排序,sorting,scripting,elasticsearch,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" } } } 但是我不喜欢

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

{
   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()
实际上返回一个列表,而
包含的方法是O(n)


有更好的方法吗?

您找到更好的方法了吗?我遇到了同样的情况。谢谢不太好,但我已经退出这个项目一年了。我相信现在它可以通过聚合框架以某种方式完成。我最终使用function_score和boost来完成。实际上,您需要优化搜索结果,以便在有限数量的值上运行function_score。或者以某种方式使其可分配值为1到96。这是否足够有限?你是说我应该告诉Elasticsearch映射时值的范围是多少?