有一个存储数组的字段。我想根据该字段的数组长度对文档进行排序。根据elasticsearch中数组的长度排序
样本文件
document 1 = {
"countryCodes" : ["US","UK","UA","IN"]
}
document 2 ={
"countryCodes" : ["FR","SU","UG","UK","US"]
}
于是,同比排序,结果应该显示文档2,然后再记录1.
有一个存储数组的字段。我想根据该字段的数组长度对文档进行排序。根据elasticsearch中数组的长度排序
样本文件
document 1 = {
"countryCodes" : ["US","UK","UA","IN"]
}
document 2 ={
"countryCodes" : ["FR","SU","UG","UK","US"]
}
于是,同比排序,结果应该显示文档2,然后再记录1.
这里有两个选项。
脚本 - 同样可以使用脚本来实现。
{ “排序”:{ “_script”:{ “脚本”: “DOC [ 'countryCodes'] values.size()” } } }
这样做,这将是最简单的方法也index包含另一场数组的长度,然后在该字段上排序。
另一种方法是使用script-based sorting并使用groovy返回数组的长度。
{
"query": {
"match_all": {}
},
"sort": {
"_script": {
"script": "doc.countryCodes.values.size()"
}
}
}
此外请务必登录enable dynamic scripting才能正常工作。