elasticsearch ElasticSearch[脚本]未知字段[文件],未找到解析器,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch ElasticSearch[脚本]未知字段[文件],未找到解析器,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch ElasticSearch[脚本]未知字段[文件],未找到解析器

elasticsearch ElasticSearch[脚本]未知字段[文件],未找到解析器,elasticsearch,kibana,elasticsearch,Kibana,我使用script\u score自定义评分: GET /customer/_search { "query": { "function_score": { "query": { "match": { "name": "Mark" } }, "script_score": {

我使用
script\u score
自定义评分:

GET /customer/_search
{
    "query": {
        "function_score": {
            "query": {
                "match": {
                    "name": "Mark"
                }
            },
            "script_score": {
              "script": {
                "lang": "painless",
                "file": "test"
              }
            }
        }
    }
}
我设置了
“文件”:“test”
,并将
test.groovy
文件放在
config/scripts
目录中,但我得到了以下错误:

{
  "error": {
    "root_cause": [
      {
        "type": "illegal_argument_exception",
        "reason": "[script] unknown field [file], parser not found"
      }
    ],
    "type": "illegal_argument_exception",
    "reason": "[script] unknown field [file], parser not found"
  },
  "status": 400
}
[script]未知字段[文件],找不到解析器
!为什么?我需要安装一些插件吗

弹性搜索版本:6.2.3

已安装的插件:无

JVM版本:1.8.0_181

操作系统版本:Ubuntu Linux 4.4.0-124-generic

在ES 6.0中,您现在应该使用

你可以很容易地做到

首先,存储脚本:

POST _scripts/test
{
  "script": {
    "lang": "painless",
    "source": "Math.log(_score * 2)"
  }
}
然后在查询中使用它:

GET /customer/_search
{
    "query": {
        "function_score": {
            "query": {
                "match": {
                    "name": "Mark"
                }
            },
            "script_score": {
              "script": {
                "id": "test"
              }
            }
        }
    }
}

我想做一些复杂的策略来计算分数,我可以将脚本代码存储到文件中吗?您可以将其存储到文件中,但最终需要使用
\u scripts
端点将其存储到ES中