# Source exclude wrong when field is empty

**URL:** <https://discuss.elastic.co/t/source-exclude-wrong-when-field-is-empty/108884>\
**Category:** Elasticsearch\
**Created:** [November 23, 2017, 12:27pm UTC](https://discuss.elastic.co/t/source-exclude-wrong-when-field-is-empty/108884 "2017-11-23T12:27:00Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dolgy](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dolgy/32/24737_2.png) [@Dolgy](https://discuss.elastic.co/u/Dolgy)\
**Post date:** [November 23, 2017, 12:27pm UTC](https://discuss.elastic.co/t/source-exclude-wrong-when-field-is-empty/108884/1 "2017-11-23T12:27:00Z")

</div>

Hy, I'm trying to exclude one field from my data and is working wrong on ES 6

**Query**

```
GET /warehouses/doc/_search
{
  "query": {
    "bool": {
      "must": {
        "match_all": {}
      }
    }
  },
  "_source": {
    "excludes": [
      "user.active"
    ]
  }
}

```

Excluding field "active" from **user** with data like this is working perfectly:

```
{
    "active": true,
    "warehouse": "London",
    "user": ["active":true,"name":"Mike"]
}

```

**RESULT**

```
{
    "active": true,
    "warehouse": "London",
    "user": ["name":"Mike"]
}

```

When user is empty, ES 6 dont work well, removes it:

```
{
    "active": true,
    "warehouse": "London",
    "user": []
}

```

**RESULT**

```
{
    "active": true,
    "warehouse": "London"
}
```

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [November 23, 2017, 2:06pm UTC](https://discuss.elastic.co/t/source-exclude-wrong-when-field-is-empty/108884/2 "2017-11-23T14:06:03Z")

</div>

I don’t think there is a way to prevent that.

---

<div class="post-metadata">

**Author:** ![Dolgy](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dolgy/32/24737_2.png) [@Dolgy](https://discuss.elastic.co/u/Dolgy)\
**Post date:** [November 23, 2017, 3:15pm UTC](https://discuss.elastic.co/t/source-exclude-wrong-when-field-is-empty/108884/3 "2017-11-23T15:15:23Z")

</div>

@dadoonet, on ES 5 it works well.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [November 23, 2017, 3:52pm UTC](https://discuss.elastic.co/t/source-exclude-wrong-when-field-is-empty/108884/4 "2017-11-23T15:52:13Z")

</div>

Oh?

I think @tanguy might know.

---

<div class="post-metadata">

**Author:** ![Dolgy](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dolgy/32/24737_2.png) [@Dolgy](https://discuss.elastic.co/u/Dolgy)\
**Post date:** [November 27, 2017, 8:03am UTC](https://discuss.elastic.co/t/source-exclude-wrong-when-field-is-empty/108884/5 "2017-11-27T08:03:43Z")

</div>

Thx @dadoonet

@tanguy, can you follow this post and tell me something, please.

---

<div class="post-metadata">

**Author:** ![tanguy](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tanguy/32/6030_2.png) [@tanguy](https://discuss.elastic.co/u/tanguy)\
**Post date:** [November 27, 2017, 8:37am UTC](https://discuss.elastic.co/t/source-exclude-wrong-when-field-is-empty/108884/6 "2017-11-27T08:37:21Z")

</div>

POST /test/doc/0  
{  
"active": true,  
"warehouse": "London",  
"user": ["active":true,"name":"Mike"]  
}

is not a valid JSON content and fails on 5.4, 5.6 and 6.0.

Are you using nested documents? If so can you please post the mapping you are using?

---

<div class="post-metadata">

**Author:** ![Dolgy](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dolgy/32/24737_2.png) [@Dolgy](https://discuss.elastic.co/u/Dolgy)\
**Post date:** [November 27, 2017, 3:02pm UTC](https://discuss.elastic.co/t/source-exclude-wrong-when-field-is-empty/108884/7 "2017-11-27T15:02:44Z")

</div>

@tanguy, use this data:

```
POST /test/doc/0
{
  "active": true,
  "warehouse": "London",
  "user": [
    {
      "active": true,
      "name": "Mike"
    },
    {
      "active": true,
      "name": "Jimmy"
    }
  ]
}

POST /test/doc/1
{
  "active": true,
  "warehouse": "London",
  "user": []
}

GET /test/doc/_search
{
  "query": {
    "bool": {
      "must": {
        "match_all": {}
      }
    }
  },
  "_source": {
    "excludes": [
      "user.active"
    ]
  }
}
```

---

<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 25, 2017, 3:03pm UTC](https://discuss.elastic.co/t/source-exclude-wrong-when-field-is-empty/108884/8 "2017-12-25T15:03:15Z")

</div>

Closed on December 25, 2017, 3:03pm UTC

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