当前位置: 首页 > 知识库问答 >
问题:

弹性搜索脚本 - 意外字符

向泽语
2023-03-14

我正在尝试使用无痛脚本更新文档。我的文档包含“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"
        }
      }

执行以下脚本时,我得到了< code >“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"
       }
    }

有没有解决方法?

共有1个答案

牟波
2023-03-14

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

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

如果字段名以数字开头,情况也是一样的,因为它不是有效的无痛标识符,例如。

ctx._source['4a4ayc8'] = params.param3
 类似资料:
  • 我是ES的新手,我正在尝试使用聚合编写搜索查询。 在写同样的东西时,我面临着无痛脚本的问题。 哪里可以得到完整的无痛脚本文档,用于弹性搜索?

  • 由于已经有很多关于连字符的问题,我已经尝试了以下解决方案: 使用字符筛选器:ElasticSearch-在名称中使用连字符进行搜索。 所以我做了这个映射: 所以char筛选器似乎没有在搜索字符串上执行?我该怎么做才能让它起作用?

  • 我使用Elasticsearch允许用户输入要搜索的术语。例如,我要搜索以下属性'name': 如果使用以下代码搜索或,我希望返回此文档。 我尝试过做一个bool must和做多个术语,但它似乎只有在整个字符串都匹配的情况下才起作用。 所以我真正想做的是,这个词是否以任何顺序包含两个词。 有人能帮我走上正轨吗?我已经在这上面砸了一段时间了。

  • 当我执行ps-aef grep elasticsearch HeapDumpOnOutOfMemoryError时看到了这一点 501 373 47 1 0 2:29pm ttys004 0:04.14/usr/bin/Java-xms4g-xmx4g-xss256k-djava.awt.headless=true-xx:+useparnewgc-xx:+useparnewgc-xx:+usepa

  • 我从ElasticSearch得到以下错误。 我在Ubuntu上运行Elasticsearch 1.7.2。 我做错了什么?

  • 我正在编写一个脚本,用于更新索引的嵌套字段。基本上,它添加了新的嵌套文档。我想更新脚本以返回该字段的嵌套文档的总数。 这里是结构 索引:主题嵌套字段:users_read 每当一个新用户阅读时,他的名字就会被添加到“users_read”中。这通过脚本发生。 我想修改脚本以返回number of users_read的值。 这是我正在使用的脚本 邮政 - http://elasticserver: