Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Query DSL ›Запросы на уровне терминов

Запрос Exists

Возвращает документы, содержащие индексированное значение для поля.

Индексированное значение может отсутствовать для поля документа по различным причинам:

  • Поле в исходном JSON является null или []
  • Поле имеет "index" : false и "doc_values" : false, заданные в схеме
  • Длина значения поля превысила значение ignore_above, заданное в схеме
  • Значение поля было некорректным и ignore_malformed было определено в схеме

Пример запроса

resp = client.search(
    query={
        "exists": {
            "field": "user"
        }
    },
)
print(resp)
response = client.search(
  body: {
    query: {
      exists: {
        field: 'user'
      }
    }
  }
)
puts response
res, err := es.Search(
	es.Search.WithBody(strings.NewReader(`{
	  "query": {
	    "exists": {
	      "field": "user"
	    }
	  }
	}`)),
	es.Search.WithPretty(),
)
fmt.Println(res, err)
const response = await client.search({
  query: {
    exists: {
      field: "user",
    },
  },
});
console.log(response);
GET /_search
{
  "query": {
    "exists": {
      "field": "user"
    }
  }
}

Параметры верхнего уровня для exists

field

(Обязательно, строка) Имя поля, которое вы хотите искать.

Хотя поле считается несуществующим, если значение JSON равно null или [], эти значения укажут, что поле существует:

  • Пустые строки, такие как "" или "-"
  • Массивы, содержащие null и другое значение, например [null, "foo"]
  • Специальное значение null-value, определённое в схеме поля

Примечания

Поиск документов, отсутствующих в индексе

Чтобы найти документы, у которых отсутствует индексированное значение для поля, используйте оператор must_not булевых запросов с запросом exists.

Следующий запрос возвращает документы, у которых отсутствует индексированное значение для поля user.id.

resp = client.search(
    query={
        "bool": {
            "must_not": {
                "exists": {
                    "field": "user.id"
                }
            }
        }
    },
)
print(resp)
response = client.search(
  body: {
    query: {
      bool: {
        must_not: {
          exists: {
            field: 'user.id'
          }
        }
      }
    }
  }
)
puts response
const response = await client.search({
  query: {
    bool: {
      must_not: {
        exists: {
          field: "user.id",
        },
      },
    },
  },
});
console.log(response);
GET /_search
{
  "query": {
    "bool": {
      "must_not": {
        "exists": {
          "field": "user.id"
        }
      }
    }
  }
}

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/query-dsl-exists-query.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API