# Delete "field" inside array

**URL:** <https://discuss.elastic.co/t/delete-field-inside-array/72867>\
**Category:** Logstash\
**Created:** [January 26, 2017, 9:23am UTC](https://discuss.elastic.co/t/delete-field-inside-array/72867 "2017-01-26T09:23:23Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![adrianolimit](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/adrianolimit/32/11930_2.png) [@adrianolimit](https://discuss.elastic.co/u/adrianolimit)\
**Post date:** [January 26, 2017, 9:23am UTC](https://discuss.elastic.co/t/delete-field-inside-array/72867/1 "2017-01-26T09:23:23Z")

</div>

Hello everyone,

I'm using the "Twitter input" and I want to delete some fields that I don't need.

For example, I would like to remove (so not index in Elasticsearch), the field "indices" inside the field "[entities][hashtags]" :

```
   "entities": {
            "hashtags": [
              {
                "indices": [
                  10,
                  16
                ],
                "text": "sport"
              }
            ]
          },
        }

```

I tried to use "ruby filter" in order to loop into the "hashtags" array and delete the "indices" element but that doesn't work...

```
if ([entities][hashtags]) {
	ruby {
		code => "event.get('[entities][hashtags]').each {
					|k| k.delete('indices')
		}"
	}
}

```

Do you have any idea?

Thanks in advance for your help 🙂

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [January 29, 2017, 6:59pm UTC](https://discuss.elastic.co/t/delete-field-inside-array/72867/2 "2017-01-29T18:59:09Z")

</div>

That piece of Ruby looks correct. Are you getting anything related to it in your logs?

---

<div class="post-metadata">

**Author:** ![adrianolimit](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/adrianolimit/32/11930_2.png) [@adrianolimit](https://discuss.elastic.co/u/adrianolimit)\
**Post date:** [January 29, 2017, 8:44pm UTC](https://discuss.elastic.co/t/delete-field-inside-array/72867/3 "2017-01-29T20:44:49Z")

</div>

Hello Magnus,

I checked my log files and I didn't see any error. The problem is that in my Elasticsearch index (ouput) I still have the field "indices" within "entities.hashtags". Do you have any idea to solve my problem?

Thank you in advance.

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [January 29, 2017, 9:02pm UTC](https://discuss.elastic.co/t/delete-field-inside-array/72867/4 "2017-01-29T21:02:13Z")

</div>

I'd try to narrow things down. Is the Ruby code being hit at all? What happens if you place `event.tag('foo')` at the beginning of the code block? Is the message tagged? What if you place it inside the `each` loop?

---

<div class="post-metadata">

**Author:** ![adrianolimit](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/adrianolimit/32/11930_2.png) [@adrianolimit](https://discuss.elastic.co/u/adrianolimit)\
**Post date:** [January 29, 2017, 9:18pm UTC](https://discuss.elastic.co/t/delete-field-inside-array/72867/5 "2017-01-29T21:18:05Z")

</div>

If I place `event.tag('foo')` at the beginning of the code block I obtain the field below in Elasticsearch, as expected :

```
   "tags": [
                "foo"
    ]

```

If I place the code here :

```
event.get('[entities][hashtags]').each {|k|
         event.tag('foo')
	 k.delete('indices')
}"

```

I also obtain the field below in Elasticsearch :

```
   "tags": [
                "foo"
    ]

```

I don't understand where is the problem...

For information, I'm using Elasticsearch 5.1.1 and Logstash 5.1.1

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [January 30, 2017, 6:27am UTC](https://discuss.elastic.co/t/delete-field-inside-array/72867/6 "2017-01-30T06:27:48Z")

</div>

Then I don't know what's up.

---

<div class="post-metadata">

**Author:** ![adrianolimit](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/adrianolimit/32/11930_2.png) [@adrianolimit](https://discuss.elastic.co/u/adrianolimit)\
**Post date:** [January 30, 2017, 7:47am UTC](https://discuss.elastic.co/t/delete-field-inside-array/72867/7 "2017-01-30T07:47:19Z")

</div>

I'm using a template for my index in Elasticsearch and in this template there is not the field "indices", do you know if it's possible to index only the fields that are in my template and ignore (do not index) the others fields ?

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [January 30, 2017, 8:18am UTC](https://discuss.elastic.co/t/delete-field-inside-array/72867/8 "2017-01-30T08:18:17Z")

</div>

I'm not sure. I suggest you start a new topic in the Elasticsearch category.

---

<div class="post-metadata">

**Author:** ![adrianolimit](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/adrianolimit/32/11930_2.png) [@adrianolimit](https://discuss.elastic.co/u/adrianolimit)\
**Post date:** [January 30, 2017, 8:41am UTC](https://discuss.elastic.co/t/delete-field-inside-array/72867/9 "2017-01-30T08:41:35Z")

</div>

It is possible to use `remove_field =>` on my `k` object?

Something like this : `remove_field => "[entities][hashtags][k][indices]"`

One other thing, when I tried to use `set()` method in my `k` object like this :

```
event.get('[entities][hashtags]').each {|k|
	 event.tag('foo')
	 k.set('indices','this is a test')
}

```

I obtained the following error :

Ruby exception occurred: undefined method `set' for {"indices"=\>[72, 80], "text"=\>"data"}:Hash

Is it normal?

---

<div class="post-metadata">

**Author:** ![magnusbaeck](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/magnusbaeck/32/44943_2.png) [@magnusbaeck](https://discuss.elastic.co/u/magnusbaeck)\
**Post date:** [January 30, 2017, 8:52am UTC](https://discuss.elastic.co/t/delete-field-inside-array/72867/10 "2017-01-30T08:52:16Z")

</div>

> Is it normal?

Yes, that's expected.

---

<div class="post-metadata">

**Author:** ![adrianolimit](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/adrianolimit/32/11930_2.png) [@adrianolimit](https://discuss.elastic.co/u/adrianolimit)\
**Post date:** [January 30, 2017, 8:59am UTC](https://discuss.elastic.co/t/delete-field-inside-array/72867/11 "2017-01-30T08:59:05Z")

</div>

So my only solution is to delete my objects in my array like this :

```
remove_field => "[entities][hashtags][0][indices]"
remove_field => "[entities][hashtags][1][indices]"

```

That works, but the problem is that I can have 0 or x objects in my array... How can I do this dynamically?

Thank you in advance.

---

<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:** [February 27, 2017, 8:59am UTC](https://discuss.elastic.co/t/delete-field-inside-array/72867/12 "2017-02-27T08:59:09Z")

</div>

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