node.js - 如何使用他们的节点客户端将脚本放入弹性搜索?
问题描述
我正在使用带有elasticsearch版本6.4的最新版本的elasticsearch npm ,并尝试将新的.script
根据他们的文件;putScript
函数需要id
和body
属性。
因此,当我尝试调用它时,例如:
client.putScript({
id: 'date_formatter',
body: {
lang: "painless",
source: `// Get each field value as string
String datetime = doc[params.field].value.toString();
// Create format object based on string
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(params.format);
// cast datetime into ZonedDateTime to use format function
ZonedDateTime zdt = ZonedDateTime.parse(datetime);
// return formatted date
return zdt.format(formatter);`
}
})
它{ acknowledged: true }
按预期返回,但是当我通过kibana检查它时,它返回:
{
"_id": "date_formatter",
"found": true,
"script": {
"lang": "mustache",
"source": """{"lang":"painless"}"""
}
}
有没有办法通过节点客户端script
放入elasticsearch ?
解决方案
您需要以与此处描述的方式基本相同的方式将两者包装lang
到一个部分source
中:script
client.putScript({
id: 'date_formatter',
body: {
script: {
lang: "painless",
source: `// Get each field value as string
String datetime = doc[params.field].value.toString();
// Create format object based on string
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(params.format);
// cast datetime into ZonedDateTime to use format function
ZonedDateTime zdt = ZonedDateTime.parse(datetime);
// return formatted date
return zdt.format(formatter);`
}
}
})
推荐阅读
- java - 尝试一些更改并回滚到以前的状态以防 Java 失败
- manim - ManimGL 错误...在 example_scenes 的 Graphscene 中未渲染轴
- javascript - After Effects:Javascript - 表达式中使用的未定义值(可能超出范围数组下标?)
- reactjs - React 内联样式不适用于 ":hover" 状态
- javascript - 使用 ${} 访问 vue-model 属性
- amazon-web-services - Packer 无法与 AWS 实例通信
- transactions - 缺少通知+如何找到收件人地址?
- python - Python Socket SSL OSError: [WinError 10057] A request to send or receive data was not allowed because the socket is not connected and (wh
- spring-boot - 启动 Spring Boot Eureka Client 时出错
- flutter - 我无法运行我的颤振应用程序它抛出 IOClient 异常