elasticsearch如何实现按terms指定顺序排序

elasticsearch如何实现terms顺序排序
我使用的是elasticsearch7.17.3版本,通过terms筛选fileId为固定值的内容,现在需要按terms传入的内容顺序排序应该如何实现呢?

如:现在执行下面的语句返回内容默认是按fileId正序排列的,为1,2,3,4,5,6的顺序,但是我想要返回内容按1,3,2,6,4,5 的顺序返回,这种应该如何实现呢?

POST file_vector/_search  
{  
  "query": {  
    "bool": {  
      "must": [  
        {  
          "terms": {  
            "fileId": [  
              "1","3","2","6","4","5"  
            ]
          } 
        }
      ]  
    }  
  }
}

根据GPT
可以使用function_score查询实现按传入顺序排序。具体实现如下:

POST file_vector/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "fileId": [
              "1","3","2","6","4","5"
            ]
          }
        }
      ]
    }
  },
  "sort": [
    {
      "_script": {
        "type": "number",
        "order": "asc",
        "script": {
          "source": "params.order.indexOf(doc['fileId'].value.toString())",
          "params": {
            "order": [
              "1","3","2","6","4","5"
            ]
          }
        }
      }
    }
  ]
}

其中,sort字段使用_script来自定义排序规则。脚本中使用了params.order.indexOf(doc['fileId'].value.toString())来获取当前文档fileId在传入顺序中的位置,从而实现按传入顺序排序。