javascript - 在 Elasticsearch 中,为什么我的多行脚本不起作用?

标签 javascript elasticsearch

我正在使用 Elasticsearch JavaScript API。

以下脚本可以正常运行,不会出现错误:

const script = {
  "lang": "painless",
  "source": `
  for (int i = 0; i < ctx._source.metadata.length; ++i) {
  }
  `,
};

但是当我尝试使用三个双引号时,如下例所示:

https://www.elastic.co/guide/en/elasticsearch/painless/master/painless-examples.html#_accessing_doc_values_from_painless

(因为我的脚本将是一个复杂的多行脚本),我将代码修改为:

const script = {
  "lang": "painless",
  "source": `
  """
  for (int i = 0; i < ctx._source.metadata.length; ++i) {
  }
  """
  `,
};

然后我收到以下错误:

"reason\":\"unexpected token ['\\"\\n for (int i = 0; i < ctx._source.metadata.length; ++i) {\\n }\\n \\"'] was expecting one of [{, ';'}].\"}},\"status\":500}"}

如何解决这个问题?

最佳答案

在 JavaScript 中,多行字符串可以用 `.不需要“”。您引用的文档不适用于 JavaScript。

... because my script is going to be a complex multi-line one

...但是您的第一个示例还显示了多行代码并且可以工作吗?

关于javascript - 在 Elasticsearch 中,为什么我的多行脚本不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55857942/

相关文章:

java - 在搜索中找不到术语,但存在于 Elasticsearch 中的术语 vector 中

elasticsearch - 日期范围查询不适用于Elastic 2.4群集

javascript - 如何从 JavaScript 中的函数将值设置为 n 维数组?

javascript - AngularJS 无法看到必填字段

javascript - AJAX 请求 - 还清除占位符文本以及 HTML 输入字段值

ruby-on-rails - 将Elasticsearch与RSpec和Factorygirl一起使用

elasticsearch - 使用Must Field值编写Elasticsearch Nest Bool查询

hadoop - Flume ElasticSearchSink不会消耗所有消息

javascript - D3.js:元素没有任何宽度

javascript - 显示 :none 时在输入字段中切换