Get API
Тема дорожной карты · Elasticsearch
Get API в Elasticsearch извлекает отдельный документ из индекса по его уникальному _id через эндпоинт GET /<index>/_doc/<id>, возвращая полный источник документа вместе с метаданными — _index, _id, _version, _seq_no. Get API выполняет чтение в реальном времени: в отличие от поисковых запросов, он обходит цикл обновления и читает напрямую из translog, если документ был проиндексирован, но ещё не сброшен в доступный для поиска сегмент, — таким образом, вы всегда получаете последнюю проиндексированную версию. Если документ не существует, Elasticsearch возвращает ответ с "found": false и HTTP-статусом 404, не вызывая ошибки. С помощью параметра _source можно запросить только подмножество полей (например, GET /products/_doc/42?_source=name,price), чтобы снизить сетевую нагрузку для больших документов. Multi-Get API по адресу GET /_mget расширяет Get API, позволяя получать несколько документов из одного или нескольких индексов в рамках одного запроса — что эффективнее, чем последовательные вызовы Get API в цикле.
Как это работает
Get API: Index API (PUT /index/_doc/id — create/replace), Get API (GET /index/_doc/id), Update API (POST /index/_update/id — partial update через script или doc), Delete API (DELETE /index/_doc/id), Bulk API (POST /_bulk с newline-delimited actions). Bulk обязателен для high-throughput индексации — single-doc indexing жжёт ресурсы. ES near real-time (NRT): writes ищутся через ~1 секунду (refresh interval).
Когда применять
Bulk API для любой sustained индексации — batch 5-15MB типично. Тюньте refresh_interval в -1 во время bulk-загрузок, потом 1s для normal use — экономит IO + heap. Updates в ES = delete + re-index под капотом — частые updates фрагментируют индексы. Для deletes — reindex-with-filter лучше многих delete-by-query.
Типичные ошибки
Ловушки Get API: single-doc indexing в hot loop (кластер ползёт); Bulk batches слишком большие (>100MB — OOM); не handle bulk partial failures (часть items падают, игнор); update API для очень частых updates (delete+re-index churn).