Bulk API
Тема дорожной карты · Elasticsearch
Bulk API в Elasticsearch позволяет выполнять несколько операций индексирования, создания, обновления и удаления в рамках одного HTTP-запроса к эндпоинту POST /_bulk, что существенно сокращает количество сетевых обращений по сравнению с отдельными запросами. Тело каждого запроса состоит из JSON-строк, разделённых переносами (NDJSON): строка действия и метаданных (например, {"index": {"_index": "my-index", "_id": "1"}}) за которой следует необязательная строка с источником документа. Bulk API — рекомендованный метод для высокопроизводительного приёма данных в Elasticsearch, поскольку он группирует работу как на сетевом уровне, так и на уровне шардов. Elasticsearch возвращает объект-ответ, в котором перечислен результат каждой отдельной операции, что позволяет выявлять частичные сбои без повторной отправки всего пакета. Подбор оптимального размера пакета — как правило, от 5 МБ до 15 МБ на запрос — является одной из наиболее эффективных оптимизаций производительности при загрузке больших наборов данных в индекс Elasticsearch.
Как это работает
Bulk 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.
Типичные ошибки
Ловушки Bulk API: single-doc indexing в hot loop (кластер ползёт); Bulk batches слишком большие (>100MB — OOM); не handle bulk partial failures (часть items падают, игнор); update API для очень частых updates (delete+re-index churn).
Связанные понятия
Полезные ресурсы
Проверить знания (1)
Загрузка вопросов…