# Painless Script - Unexpected characters

**URL:** <https://discuss.elastic.co/t/painless-script-unexpected-characters/273502>\
**Category:** Elasticsearch\
**Tags:** painless\
**Created:** [May 20, 2021, 9:53am UTC](https://discuss.elastic.co/t/painless-script-unexpected-characters/273502 "2021-05-20T09:53:27Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Leuteris](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/leuteris/32/89009_2.png) [@Leuteris](https://discuss.elastic.co/u/Leuteris)\
**Post date:** [May 20, 2021, 9:53am UTC](https://discuss.elastic.co/t/painless-script-unexpected-characters/273502/1 "2021-05-20T09:53:27Z")

</div>

I am trying to update a doc using painless scripts. My document contain fields like `"a4ayc/8"` (the field name contains the character `/`).

**Document sample:**

```auto
{
    "_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"
    }
  }

```

Executing the following script i get an exception for the `"a4ayc/8"` field:

> [type=illegal\_argument\_exception, reason=invalid assignment: cannot assign a value to division operation [/]]

**Script:**

```auto
{
       "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"
       }
    }

```

Is there any way to update field `"a4ayc/8"` using scripts?

---

<div class="post-metadata">

**Author:** ![debrt](https://avatars.discourse-cdn.com/v4/letter/d/b9e5f3/32.png) [@debrt](https://discuss.elastic.co/u/debrt)\
**Post date:** [May 20, 2021, 10:02am UTC](https://discuss.elastic.co/t/painless-script-unexpected-characters/273502/2 "2021-05-20T10:02:21Z")

</div>

Have a look at [literals in painless](https://www.elastic.co/guide/en/elasticsearch/painless/current/painless-literals.html)  
I think this is something to do because the / is a special character

---

<div class="post-metadata">

**Author:** ![stu](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/stu/32/75063_2.png) [@stu](https://discuss.elastic.co/u/stu)\
**Post date:** [May 20, 2021, 1:08pm UTC](https://discuss.elastic.co/t/painless-script-unexpected-characters/273502/3 "2021-05-20T13:08:03Z")

</div>

@debrt is correct.

If you need to update a field with special characters, you cannot use the shortcut syntax, `ctx._source.a4ayc/8`, and instead should use the map syntax, `ctx._source['a4ayc/8']`.

In general, we recommend the map syntax for this reason. The shortcut syntax is best for quick one-offs.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [June 17, 2021, 1:08pm UTC](https://discuss.elastic.co/t/painless-script-unexpected-characters/273502/4 "2021-06-17T13:08:49Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
