Elasticsearch Elasticsearch field is not empty

By Opster Team

Updated: Jun 13, 2023

| 1 min read

Elasticsearch: Querying for Non-Empty Fields

When working with Elasticsearch, there might be situations where you need to query documents based on the presence of a non-empty field. This article will guide you through the process of querying Elasticsearch for documents where a specific field is not empty.

Using the `exists` Query

The `exists` query can be used to find documents where a field exists and contains a non-null value. The basic syntax for the `exists` query is as follows:

{
  "query": {
    "exists": {
      "field": "your_field_name"
    }
  }
}

Replace `your_field_name` with the name of the field you want to check for non-empty values. Here’s an example that demonstrates how to use the `exists` query to find documents where the `email` field is not empty:

{
  "query": {
    "exists": {
      "field": "email"
    }
  }
}

Using the `bool` Query with `must_not` and `missing`

Another approach to find documents with non-empty fields is to use the `bool` query in combination with `must_not` and the `missing` query. The `missing` query is deprecated in Elasticsearch 5.x and removed in Elasticsearch 6.x, so this method is only applicable for Elasticsearch versions below 5.x.

The basic syntax for the `bool` query with `must_not` and `missing` is as follows:

{
  "query": {
    "bool": {
      "must_not": {
        "missing": {
          "field": "your_field_name"
        }
      }
    }
  }
}

Replace `your_field_name` with the name of the field you want to check for non-empty values. Here’s an example that demonstrates how to use the `bool` query with `must_not` and `missing` to find documents where the `email` field is not empty:

{
  "query": {
    "bool": {
      "must_not": {
        "missing": {
          "field": "email"
        }
      }
    }
  }
}

Keep in mind that this method is not recommended for Elasticsearch 5.x and later versions, as the `missing` query is deprecated and removed in those versions.

In conclusion

the `exists` query is the preferred method for querying documents with non-empty fields in Elasticsearch. The `bool` query with `must_not` and `missing` can be used for older Elasticsearch versions, but it is not recommended for newer versions due to the deprecation and removal of the `missing` query.