我正在运行Elasticsearch的本地实例,并尝试在scripted_fields下使用“ painless”。我可以写一行脚本代码就好了,但是当我使用三引号(根据文档支持)创建多行脚本时,它给了我这个奇怪的解析错误。
运行单行脚本可以正常工作:
{
"script_fields": {
"scripted": {
"script": {
"lang": "painless",
"source": "0"
}
}
}
}
在每个结果中返回的每个实体此结果(预期):
"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]
有什么想法吗?
答案 0 :(得分:0)
我能够(至少)为Postman解决一个问题。您不能在邮递员正文JSON中使用多行字符串,因此请使用预先请求脚本。这是一个示例:
pm.environment.set("painless_script",`\
return 0\
`);
注意:
然后在邮件正文中:
{
"script_fields": {
"scripted": {
"script": {
"lang": "painless",
"source": "{{painless_script}}"
}
}
}
}
这会产生来自Elasticsearch的正确结果
答案 1 :(得分:0)
效果很好,只需确保它们是反勾号(`)而不是勾号(')。