ElasticSearch中的TRIM()函数

时间:2018-11-01 13:05:39

标签: elasticsearch kibana

使用Kibana 5.5.2。我在名为“供应商”的索引中有1800万条记录。我要使用以下代码进行的操作是修剪所有前导/后缀空白,但是出现以下错误:

"type": "parse_exception",
"reason": "expected one of [inline], [file] or [stored] fields, but found none"

这是我正在使用的代码。 “ name”是我要在索引中的所有18M文档上修剪的字段:

POST suppliers/_update_by_query
{
  "script": {
    "source": "ctx._source.name=trim(name)",
    "lang": "painless"
  }
}

请帮助

2 个答案:

答案 0 :(得分:1)

您可以做的是使用trim processor定义提取管道,然后在通过查询调用进行更新中使用它。

首先定义您的管道:

PUT _ingest/pipeline/trim
{
  "description" : "trims my name field",
  "processors" : [ {
      "trim" : {
        "field": "name"
      }
  } ]
}

然后在通过查询调用更新时指定它:

POST suppliers/_update_by_query?pipeline=trim

答案 1 :(得分:0)

@Val和@ibexit。谢谢你的帮助。 Val的回应奏效了...我只是第一次对其进行了错误格式化。这是有效的方法:

PUT _ingest/pipeline/trim
{
  "description" : "trims my name field",
  "processors" : [ {
      "trim" : {
        "field": "name"
      }
  } ]
}
POST suppliers/_update_by_query?pipeline=trim