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映射时值的范围是多少?