Elasticsearch Painless:使用三个引号时出错:意外字符("\""(代码34)) [英] Elasticsearch Painless: Error when using three quotes: Unexpected Character ('\"' (code 34))

查看:1858
本文介绍了Elasticsearch Painless:使用三个引号时出错:意外字符("\""(代码34))的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在运行Elasticsearch的本地实例,并尝试在scripted_fields下使用"painless".我可以写一行脚本代码就好了,但是当我使用三引号(根据文档支持)创建多行脚本时,它给了我这个奇怪的解析错误.

I'm running a local instance of Elasticsearch, and trying to work with 'painless' under scripted_fields. I can write a single line of script code just fine, but when I use triple-quotes (which is supported as per documentation) to create a multi-line script, it gives me this strange parsing error.

运行单行脚本可以正常工作:

Running a single-line of script works fine:

{
  "script_fields": {
    "scripted": {
      "script": {
        "lang": "painless",
        "source": "0"
      }
    }
  }
}

在每个结果中返回的每个实体具有此结果(预期):

With this result (expected) in each entity returned in results:

"fields" : {
  "scripted" : [
    0
  ]
}

但是使用多行格式:

{
  "script_fields": {
    "scripted": {
      "script": {
        "lang": "painless",
        "source": 
        """
          0
        """
      }
    }
  }
}

给我这个错误:

Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@56e69b76; line: 7, column: 12]

有什么想法吗?

推荐答案

我能够(至少)为Postman解决一个问题.您不能在邮递员正文JSON中使用多行字符串,因此请使用预先请求脚本.这是一个示例:

I was able to work through a solution for Postman (at least). You can't use multi-line strings in a postman body JSON, so use a pre-request script. Here's an example:

pm.environment.set("painless_script",`\
    return 0\
`);

注意:

  • 使用勾号"包装脚本
  • 您必须逃避每一行的结尾,否则Painless会抱怨.

然后在邮件正文中:

{
  "script_fields": {
    "scripted": {
      "script": {
        "lang": "painless",
        "source": "{{painless_script}}"
      }
    }
  }
}

这会产生来自Elasticsearch的正确结果

This yields correct result from Elasticsearch

这篇关于Elasticsearch Painless:使用三个引号时出错:意外字符("\""(代码34))的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆