elasticsearch 使用自定义字段名编写elasticsearch脚本,elasticsearch,scripting,elasticsearch,Scripting" /> elasticsearch 使用自定义字段名编写elasticsearch脚本,elasticsearch,scripting,elasticsearch,Scripting" />

elasticsearch 使用自定义字段名编写elasticsearch脚本

elasticsearch 使用自定义字段名编写elasticsearch脚本,elasticsearch,scripting,elasticsearch,Scripting,基本上,我想根据一些字段进行自定义脚本排序。根据不同的标准,这些字段可能会有所不同。在我们启用动态脚本之前,这一切都很好,因为我可以在我身边更改关键字。但是,现在只允许按文件编写脚本。 这是我的疑问: curl -XPOST localhost:9200/_search -d '{ "query": { "function_score": { "query": { ... }, "functions": [ {

基本上,我想根据一些字段进行自定义脚本排序。根据不同的标准,这些字段可能会有所不同。在我们启用动态脚本之前,这一切都很好,因为我可以在我身边更改关键字。但是,现在只允许按文件编写脚本。 这是我的疑问:

curl -XPOST localhost:9200/_search -d '{
  "query": {
    "function_score": {
      "query": {
       ...
      },
      "functions": [
        {
          "script_score": {
            "file": "myFile",
          }
        }
      ]
    }
  }
}'
该文件看起来像:

doc["keyword1"].value > 5 ? 5 : doc["keyword1"].value 
尽管我可以根据关键字名称构建不同的查询(使用不同的文件)。我想知道我们是否可以将关键字作为参数传递,这样就不需要在脚本/文件夹下存储多个文件


谢谢。

是的,这是可能的。您的脚本文件应如下所示:

doc[some_param].value > 5 ? 5 : doc[some_param].value 
  "functions": [
    {
      "script_score": {
        "file": "test",
        "params": {
          "some_param": "keyword1"
        }
      }
    }
  ]
您的查询如下:

doc[some_param].value > 5 ? 5 : doc[some_param].value 
  "functions": [
    {
      "script_score": {
        "file": "test",
        "params": {
          "some_param": "keyword1"
        }
      }
    }
  ]