Jer*_*my 7 elasticsearch elasticsearch-painless
我正在运行 Elasticsearch 的本地实例,并尝试在 scripted_fields 下使用“无痛”。我可以很好地编写一行脚本代码,但是当我使用三引号(根据文档支持)创建多行脚本时,它给了我这个奇怪的解析错误。
运行单行脚本效果很好:
{
"script_fields": {
"scripted": {
"script": {
"lang": "painless",
"source": "0"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果中返回的每个实体中的结果(预期)如下:
"fields" : {
"scripted" : [
0
]
}
Run Code Online (Sandbox Code Playgroud)
但使用多行格式:
{
"script_fields": {
"scripted": {
"script": {
"lang": "painless",
"source":
"""
0
"""
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
给我这个错误:
Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@56e69b76; line: 7, column: 12]
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Jer*_*my 7
我能够为邮差找到一个解决方案(至少)。您不能在邮递员正文 JSON 中使用多行字符串,因此请使用预请求脚本。这是一个例子:
pm.environment.set("painless_script",`\
return 0\
`);
Run Code Online (Sandbox Code Playgroud)
笔记:
然后在消息正文中:
{
"script_fields": {
"scripted": {
"script": {
"lang": "painless",
"source": "{{painless_script}}"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这会从 Elasticsearch 中产生正确的结果
| 归档时间: |
|
| 查看次数: |
3733 次 |
| 最近记录: |