【问题标题】:Elasticsearch Script - Unexpected charactersElasticsearch 脚本 - 意外字符
【发布时间】:2023-03-28 05:44:01
【问题描述】:

我正在尝试使用无痛脚本更新文档。我的文档包含"a4ayc/8" 之类的字段(字段名称包含字符/)。

文档样本:

   {
        "_index" : "user_profile",
        "_type" : "_doc",
        "_id" : "SQ9/X1iKV7DDJXJLLMAvyt",
        "_score" : 1.0,
        "_source" : {
          "TgdAhWI" : "text",
          "a4ayc/8" : 1,
          "SyJ3d9Q" : true,
          "qBC0wbU" : "2021-05-25T14:22:40.804Z"
        }
      }

执行以下脚本时,"a4ayc/8" 字段出现异常:

[type=illegal_argument_exception,原因=无效分配:不能 为除法运算赋值[/]]

脚本:

{
       "script":{
          "source":"ctx._source.TgdAhWI = params.param1; ctx._source.qBC0wbU = params.param2; ctx._source.a4ayc/8 = params.param3; ctx._source.SyJ3d9Q = params.param4; ",
          "lang":"painless",
          "params":{
             "param3":1,
             "param4":true,
             "param1":"text",
             "param2":"2021-05-25T14:22:40.804Z"
          }
       },
       "upsert":{
          "TgdAhWI":"text",
          "a4ayc/8":1,
          "SyJ3d9Q":true,
          "qBC0wbU":"2021-05-25T14:22:40.804Z"
       }
    }

有解决办法吗?

【问题讨论】:

    标签: elasticsearch elastic-stack elasticsearch-painless


    【解决方案1】:

    是的,您只需要以不同的方式引用该字段,如下所示:

    ctx._source['a4ayc/8'] = params.param3
    

    如果您的字段名称以数字开头也是一样的,因为它不是valid Painless identifier,例如

    ctx._source['4a4ayc8'] = params.param3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-19
      • 1970-01-01
      • 2012-09-03
      • 2014-06-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      • 1970-01-01
      相关资源
      最近更新 更多