我正在运行一个本地的Elasticsearch实例,并尝试在scripted_fields下使用“painless”。我可以很好地编写一行脚本代码,但是当我使用三重引号(根据文档支持)来创建多行脚本时,它会给出一个奇怪的解析错误。
运行单行脚本就可以了:
{
"script_fields": {
"scripted": {
"script": {
"lang": "painless",
"source": "0"
}
}
}
}在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]有什么想法吗?
发布于 2019-05-02 22:38:37
我能够解决Postman的问题(至少)。您不能在邮递员正文JSON中使用多行字符串,因此请使用pre-request脚本。下面是一个例子:
pm.environment.set("painless_script",`\
return 0\
`);备注:
然后在消息的正文中:
{
"script_fields": {
"scripted": {
"script": {
"lang": "painless",
"source": "{{painless_script}}"
}
}
}
}这将从Elasticsearch中产生正确的结果
发布于 2020-10-01 04:46:28
效果很好,只要确保它们是反刻度号(`)而不是刻度号(')。
https://stackoverflow.com/questions/55931073
复制相似问题