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

问题描述 投票:0回答:1

我正在使用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 \”:\“意外令牌['\\”\\ n for(int i = 0; i <ctx._source.metadata.length; ++ i){\\ n} \\ n \\“' ]期待其中一个[{,';'}]。\“}},\”status \“:500}”}

我该如何解决这个问题?

javascript elasticsearch
1个回答
1
投票

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

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

...但是你的第一个例子也显示了多行代码并且有效吗?

© www.soinside.com 2019 - 2024. All rights reserved.