根据elasticsearch中数组的长度排序

mic*_*her 6 sorting elasticsearch

有一个字段,其中存储了一个数组。我想根据该字段的数组长度对文档进行排序。

样本文件

document 1 = {
"countryCodes" : ["US","UK","UA","IN"]
}

document 2 ={
"countryCodes" : ["FR","SU","UG","UK","US"]
}
Run Code Online (Sandbox Code Playgroud)

因此,按照排序,结果应该首先显示文档 2,然后显示文档 1。

Vin*_*han 6

这里有两个选择。

  1. 在映射中使用标记计数类型作为多字段 - 这样另一个字段将存储为具有数组长度的多字段。您可以在这里了解更多信息。
  2. 脚本编写 - 使用脚本编写也可以实现相同的目的。

    { "sort": { "_script": { "script": "doc['countryCodes'].values.size()" } } }