8

我正在尝试将模板上传到我的 AWS 托管 ElasticSearch。

ElasticSearch 响应 500 错误,抱怨我需要设置script.painless.regex.enabledtrue. 我知道您不能elasticsearch.yml直接编辑文件,但是无论如何允许在 AWS 托管 ES 上的无痛脚本中支持正则表达式?

4

1 回答 1

2

在 AWS ES 集群下还没有办法使用正则表达式。

您可以尝试使用 StringTokenizer,如下例所示:

示例值:

doc['your_str_field.keyword'].value = '{"xxx":"123213","yyy":"123213","zzz":"123213"}'

无痛脚本:

{
"script": {
"lang": "painless",
"inline": "String xxx = doc['your_str_field.keyword'].value; xxx = xxx.replace('{','').replace('}','').replace('\"','').replace(' ','');StringTokenizer tokenizer = new StringTokenizer(xxx, ',');tokenizer.nextToken();tokenizer.nextToken();StringTokenizer tokenizer_v = new StringTokenizer(tokenizer.nextToken(),':');tokenizer_v.nextToken();return tokenizer_v.nextToken();"
}
}

另外,我需要增加 max_compilations_rate

PUT /_cluster/settings
{
"transient": {
  "script.max_compilations_rate": "500/1m"
}
}
于 2019-01-25T13:19:20.027 回答