# How to rewrite this groovy script into painless script ? Facing a lot of issues

**URL:** <https://discuss.elastic.co/t/how-to-rewrite-this-groovy-script-into-painless-script-facing-a-lot-of-issues/246110>\
**Category:** Elasticsearch\
**Created:** [August 24, 2020, 11:52am UTC](https://discuss.elastic.co/t/how-to-rewrite-this-groovy-script-into-painless-script-facing-a-lot-of-issues/246110 "2020-08-24T11:52:15Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![prasad98](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/prasad98/32/64837_2.png) [@prasad98](https://discuss.elastic.co/u/prasad98)\
**Post date:** [August 24, 2020, 11:52am UTC](https://discuss.elastic.co/t/how-to-rewrite-this-groovy-script-into-painless-script-facing-a-lot-of-issues/246110/1 "2020-08-24T11:52:15Z")

</div>

My ES document model is as follows

```auto
       "hits": [
          {
             "_source": {
                "variant_group": {
                   "variant_info": [
                      {
                         "name": "Toothpaste",
                         "inventory": 10
                      }
                   ],
                   "type_id": 1365
                }
             },
     ]

```

I want to refactor this groovy script to painless script:

```auto
"functions": [
        {
          "script_score": {
            "script": "return _source.variant_group.variant_info.any{i -> i.inventory} ? (_score + (float)doc['variant_group.max_product_per_city_sales_score'].value/100000) : ((float)doc['variant_group.max_product_per_city_sales_score'].value/100000)"
          }
        }
      ],

```

The new painless script looks like this:

```
"functions": [
        {
          "script_score": {
            "script": "return params._source.variant_group.variant_info.any(i -> i.inventory) ? (params._score + doc['variant_group.max_product_per_city_sales_score'].value/100000.0) : (doc['variant_group.max_product_per_city_sales_score'].value/100000.0)"
          }
        }
      ],

```

and it is giving me error:

```auto
{
   "error": {
      "root_cause": [
         {
            "type": "script_exception",
            "reason": "runtime error",
            "script_stack": [
               "java.base/java.lang.Class.cast(Class.java:3604)",
               "i -> i.inventory) ? (params._score + doc['variant_group.max_product_per_city_sales_score'].value/100000.0) : (doc['variant_group.max_product_per_city_sales_score'].value/100000.0)",
               "^---- HERE"
            ],
            "script": "return params._source.variant_group.variant_info.any(i -> i.inventory) ? (params._score + doc['variant_group.max_product_per_city_sales_score'].value/100000.0) : (doc['variant_group.max_product_per_city_sales_score'].value/100000.0)",
            "lang": "painless"
         }
      ],
      "type": "search_phase_execution_exception",
      "reason": "all shards failed",
      "phase": "query",
      "grouped": true,
      "failed_shards": [
         {
            "shard": 0,
            "index": "citadel-20200820.3",
            "node": "XaGgi-Y2S-O9uCJLKz5YsA",
            "reason": {
               "type": "script_exception",
               "reason": "runtime error",
               "script_stack": [
                  "java.base/java.lang.Class.cast(Class.java:3604)",
                  "i -> i.inventory) ? (params._score + doc['variant_group.max_product_per_city_sales_score'].value/100000.0) : (doc['variant_group.max_product_per_city_sales_score'].value/100000.0)",
                  "^---- HERE"
               ],
               "script": "return params._source.variant_group.variant_info.any(i -> i.inventory) ? (params._score + doc['variant_group.max_product_per_city_sales_score'].value/100000.0) : (doc['variant_group.max_product_per_city_sales_score'].value/100000.0)",
               "lang": "painless",
               "caused_by": {
                  "type": "class_cast_exception",
                  "reason": "Cannot cast java.lang.Integer to java.lang.Boolean"
               }
            }
         }
      ]
   },
   "status": 400
}

```

I am getting too many errors while refactoring it. It will be great if anyone can help me with this script.

Thanks!

---

<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:** [September 21, 2020, 11:52am UTC](https://discuss.elastic.co/t/how-to-rewrite-this-groovy-script-into-painless-script-facing-a-lot-of-issues/246110/2 "2020-09-21T11:52:18Z")

</div>

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