# Why shard failed exception is happening when trying to get a sub-string using scripetd fields?

**URL:** https://discuss.elastic.co/t/why-shard-failed-exception-is-happening-when-trying-to-get-a-sub-string-using-scripetd-fields/158085
**Category:** Kibana
**Created:** [November 25, 2018, 8:27am UTC](https://discuss.elastic.co/t/why-shard-failed-exception-is-happening-when-trying-to-get-a-sub-string-using-scripetd-fields/158085 "2018-11-25T08:27:49Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![elasticheart](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/elasticheart/32/65189_2.png) [@elasticheart](https://discuss.elastic.co/u/elasticheart)
#### Post date: [November 25, 2018, 8:27am UTC](https://discuss.elastic.co/t/why-shard-failed-exception-is-happening-when-trying-to-get-a-sub-string-using-scripetd-fields/158085/1 "2018-11-25T08:27:50Z")

</div>

Hi,

I am using ELK GA 6.3.0.

I am trying to create a scripted field using the below script, in Kibana;

```
return doc['field_a.keyword'].value.substring(17,4);

```

below is a sample data in `field_a`;

```
qw_er_qwerty_123_1234.QwertyQwerty.QwertyQwertyQwertyQwerty

```

below is the mapping;

```
"field_a": {
  "type": "text",
  "fields": {
    "keyword": {
      "type": "keyword",
      "ignore_above": 256
    }
  }
}

```

When I create the field and go to discover, I am getting shard failed exception and data is not getting populated. Why is this happening?

Thanks

---

<div class="post-metadata">

### Author: ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)
#### Post date: [November 25, 2018, 12:41pm UTC](https://discuss.elastic.co/t/why-shard-failed-exception-is-happening-when-trying-to-get-a-sub-string-using-scripetd-fields/158085/2 "2018-11-25T12:41:45Z")

</div>

Do all indices and documents have this field and mapping present?

---

<div class="post-metadata">

### Author: ![elasticheart](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/elasticheart/32/65189_2.png) [@elasticheart](https://discuss.elastic.co/u/elasticheart)
#### Post date: [November 26, 2018, 5:46am UTC](https://discuss.elastic.co/t/why-shard-failed-exception-is-happening-when-trying-to-get-a-sub-string-using-scripetd-fields/158085/3 "2018-11-26T05:46:39Z")

</div>

Hi @Christian_Dahlqvist yes, it is present.

---

<div class="post-metadata">

### Author: ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)
#### Post date: [November 26, 2018, 6:11am UTC](https://discuss.elastic.co/t/why-shard-failed-exception-is-happening-when-trying-to-get-a-sub-string-using-scripetd-fields/158085/4 "2018-11-26T06:11:27Z")

</div>

I would recommend adding a check to see if the feats exists and is long enough in the script and return a default value if it does not. That will make it more resilient.

---

<div class="post-metadata">

### Author: ![elasticheart](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/elasticheart/32/65189_2.png) [@elasticheart](https://discuss.elastic.co/u/elasticheart)
#### Post date: [November 26, 2018, 6:32am UTC](https://discuss.elastic.co/t/why-shard-failed-exception-is-happening-when-trying-to-get-a-sub-string-using-scripetd-fields/158085/5 "2018-11-26T06:32:50Z")

</div>

Hi @Christian_Dahlqvist , I already did that.. still no hope.. 😞

Below is the script;

```
def token1 = doc['field_a.keyword'].value;
def token2 = '';
if(token1 != null){
  int firstIndex = token1.indexOf('.');
  if(firstIndex > 0){
    token2 = token1.substring(0,firstIndex);
    int secondIndex = token2.indexOf('_');
    if(secondIndex > 0){
      return token2.substring(4,secondIndex);
    }
  }
  return "";
}
return "";
```

---

<div class="post-metadata">

### Author: ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)
#### Post date: [November 26, 2018, 6:36am UTC](https://discuss.elastic.co/t/why-shard-failed-exception-is-happening-when-trying-to-get-a-sub-string-using-scripetd-fields/158085/6 "2018-11-26T06:36:59Z")

</div>

You are still trying to use the field before checking that it exists. Have a look at [this thread](https://discuss.elastic.co/t/painless-if-two-field-exists-then-calculate/117489) for an example of how to do it.

---

<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: [December 24, 2018, 6:37am UTC](https://discuss.elastic.co/t/why-shard-failed-exception-is-happening-when-trying-to-get-a-sub-string-using-scripetd-fields/158085/7 "2018-12-24T06:37:05Z")

</div>

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