# Conditional inside filter error

**URL:** <https://discuss.elastic.co/t/conditional-inside-filter-error/222101>\
**Category:** Logstash\
**Created:** [March 4, 2020, 2:38pm UTC](https://discuss.elastic.co/t/conditional-inside-filter-error/222101 "2020-03-04T14:38:50Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Incauto](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/incauto/32/60149_2.png) [@Incauto](https://discuss.elastic.co/u/Incauto)\
**Post date:** [March 4, 2020, 2:38pm UTC](https://discuss.elastic.co/t/conditional-inside-filter-error/222101/1 "2020-03-04T14:38:50Z")

</div>

Hi, im trying to parse a field only if its a number, from time to time I get the string "n/a" instead of a number so I write this conditional inside a filter, but doesnt work.

I also have another mutate { convert =\> {}} inside the same filter, I dont know if this could be a problem

```auto
                 if [physmemperc] != "n/a"{ mutate { convert => {"physmemperc" => "float" }}}
                mutate {

                        convert => {
                                "virtmemperc" => "float"
                                "pages" => "float"
                                "id" => "integer"
                        }

```

The error

```auto
error"=>{"type"=>"mapper_parsing_exception", "reason"=>"failed to parse field [physmemperc] of type [float] in document with id 'B4bfpXAB4khdA4bte5Fb'. Preview of field's value: 'n/a'", "caused_by"=>{"type"=>"number_format_exception", "reason"=>"For input string: \"n/a\""}}}}}

```

---

<div class="post-metadata">

**Author:** ![rugenl](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rugenl/32/12887_2.png) [@rugenl](https://discuss.elastic.co/u/rugenl)\
**Post date:** [March 4, 2020, 3:08pm UTC](https://discuss.elastic.co/t/conditional-inside-filter-error/222101/2 "2020-03-04T15:08:55Z")

</div>

I think you could remove the field when it's "n/a", then it would appear as "missing" when indexed.

---

<div class="post-metadata">

**Author:** ![Incauto](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/incauto/32/60149_2.png) [@Incauto](https://discuss.elastic.co/u/Incauto)\
**Post date:** [March 4, 2020, 3:22pm UTC](https://discuss.elastic.co/t/conditional-inside-filter-error/222101/3 "2020-03-04T15:22:43Z")

</div>

Something like this?

```auto
  if [physmemperc] == "n/a" {
    mutate {
      remove_field => ["physmemperc"]
    }

```

there will not be a problem if I try to convert a non existing field?

```
            mutate {

                    convert => {
                            "virtmemperc" => "float"
                            "pages" => "float"
                            "id" => "integer"
                            "physmemperc" => "float"
                    }
```

---

<div class="post-metadata">

**Author:** ![rugenl](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rugenl/32/12887_2.png) [@rugenl](https://discuss.elastic.co/u/rugenl)\
**Post date:** [March 4, 2020, 4:58pm UTC](https://discuss.elastic.co/t/conditional-inside-filter-error/222101/4 "2020-03-04T16:58:23Z")

</div>

> [@Incauto](#):
>
> if [physmemperc] == "n/a" { mutate { remove\_field =\> ["physmemperc"] }

Add an else to mutate convert that field here, then remove the convert for that field below.

---

<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:** [April 1, 2020, 4:58pm UTC](https://discuss.elastic.co/t/conditional-inside-filter-error/222101/5 "2020-04-01T16:58:27Z")

</div>

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