排序上下文编辑

使用 Painless 脚本对查询中的文档进行排序

变量

params (Map, 只读)
作为查询的一部分传入的用户定义参数。
doc (Map, 只读)
包含当前文档的字段。对于单值字段,可以通过 doc['fieldname'].value 访问值。对于多值字段,这将返回第一个值;其他值可以通过 doc['fieldname'].get(index) 访问
_score (double 只读)
当前文档的相似度得分。

返回值

doubleString
排序键。返回值类型取决于脚本排序配置中 type 参数的值 ("number""string")。

API

标准的Painless API 可用。

示例

要运行此示例,请先按照上下文示例中的步骤操作。

要按 theatre 字段的长度对结果进行排序,请提交以下查询

GET /_search
{
  "query": {
    "term": {
      "sold": "true"
    }
  },
  "sort": {
    "_script": {
      "type": "number",
      "script": {
        "lang": "painless",
        "source": "doc['theatre'].value.length() * params.factor",
        "params": {
          "factor": 1.1
        }
      },
      "order": "asc"
    }
  }
}