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

时间:2019-04-25 21:33:56

标签: 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) {
  }
  """
  `,
};

然后出现以下错误:

  

“原因\”:\“意外令牌['\\” \\ n for(int i = 0; i <   ctx._source.metadata.length; ++ i){\\ n} \\ n \\“']原为   期待[{,';'}]。\“}},\”状态\“:500}”}

之一

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

在JavaScript中,多行字符串可以使用`来完成。不需要“”。您参考的文档不适用于JavaScript。

  

...因为我的脚本将是一个复杂的多行脚本

...但是您的第一个示例还显示了多行代码,行得通吗?