Exists query

Use the exists query to search for documents that contain a specific field.

An indexed value will not exist for a document field in any of the following cases:

  • The field has "index" : false specified in the mapping.
  • The field in the source JSON is null or [].
  • The length of the field value exceeds the ignore_above setting in the mapping.
  • The field value is malformed and ignore_malformed is defined in the mapping.

An indexed value will exist for a document field in any of the following cases:

  • The value is an array that contains one or more null elements and one or more non-null elements (for example, ["one", null]).
  • The value is an empty string ("" or "-").
  • The value is a custom null_value, as defined in the field mapping.

Example

For example, consider an index that contains the following two documents:

  1. PUT testindex/_doc/1
  2. {
  3. "title": "The wind rises"
  4. }

copy

  1. PUT testindex/_doc/2
  2. {
  3. "title": "Gone with the wind",
  4. "description": "A 1939 American epic historical film"
  5. }

copy

The following query searches for documents that contain the description field:

  1. GET testindex/_search
  2. {
  3. "query": {
  4. "exists": {
  5. "field": "description"
  6. }
  7. }
  8. }

copy

The response contains the matching document:

  1. {
  2. "took": 3,
  3. "timed_out": false,
  4. "_shards": {
  5. "total": 1,
  6. "successful": 1,
  7. "skipped": 0,
  8. "failed": 0
  9. },
  10. "hits": {
  11. "total": {
  12. "value": 1,
  13. "relation": "eq"
  14. },
  15. "max_score": 1,
  16. "hits": [
  17. {
  18. "_index": "testindex",
  19. "_id": "2",
  20. "_score": 1,
  21. "_source": {
  22. "title": "Gone with the wind",
  23. "description": "A 1939 American epic historical film"
  24. }
  25. }
  26. ]
  27. }
  28. }

Finding documents with missing indexed values

To find documents with missing indexed values, you can use the must_not Boolean query with the inner exists query. For example, the following request searches for documents in which the description field is missing:

  1. GET testindex/_search
  2. {
  3. "query": {
  4. "bool": {
  5. "must_not": {
  6. "exists": {
  7. "field": "description"
  8. }
  9. }
  10. }
  11. }
  12. }

copy

The response contains the matching document:

  1. {
  2. "took": 19,
  3. "timed_out": false,
  4. "_shards": {
  5. "total": 1,
  6. "successful": 1,
  7. "skipped": 0,
  8. "failed": 0
  9. },
  10. "hits": {
  11. "total": {
  12. "value": 1,
  13. "relation": "eq"
  14. },
  15. "max_score": 0,
  16. "hits": [
  17. {
  18. "_index": "testindex",
  19. "_id": "1",
  20. "_score": 0,
  21. "_source": {
  22. "title": "The wind rises"
  23. }
  24. }
  25. ]
  26. }
  27. }

Parameters

The query accepts the name of the field (<field>) as a top-level parameter.

ParameterData typeDescription
boostFloating-pointA floating-point value that specifies the weight of this field toward the relevance score. Values above 1.0 increase the field’s relevance. Values between 0.0 and 1.0 decrease the field’s relevance. Default is 1.0.