Why orchestrate the sync
A cron job calling a custom script works right up until it doesn’t: a network blip leaves your index half-updated, nobody notices the job died days ago, and there is no record of what synced when. Kestra makes the sync a first-class workflow. Every run is logged, retried on failure, observable in a UI, and triggered by a schedule or an event. You describe what should happen, and Kestra handles execution, state, and failure.How the pipelines work
Most guides in this series follow the same arc: a one-shot backfill for the initial load, then an incremental sync that keeps Meilisearch current as data is inserted, updated, and deleted. The Elasticsearch and OpenSearch guides are migrations, pairing the backfill with a safe parallel-run cutover. Three ideas recur throughout:- ION is the handoff format. Every Kestra extractor writes ION to internal storage, and the Meilisearch
DocumentAddtask reads exactly that. The pipelines are just “extract, convert, index” with no glue code. - Upserts are idempotent.
DocumentAddis add-or-replace, so overlapping sync windows and accidental re-runs are always safe. - Deletes need explicit handling.
DocumentAddnever removes documents. Each guide covers the delete strategy appropriate to its source (soft deletes plusdocuments/delete-batch, tombstone events, or an index alias swap).
Store credentials as Kestra secrets (
{{ secret('NAME') }}), never as plaintext. Inline values in these guides are for readability only.Guides
Each guide targets a Meilisearch Cloud project (fully managed, nothing to host). You supply your project URL and Default Admin API key.PostgreSQL
Relational database. Scheduled lookback window on
updated_at, soft deletes via delete-batch.MongoDB
Document database. Scheduled lookback on an
updatedAt ISO string, soft deletes via delete-batch.Amazon S3
Object storage. Event-driven trigger on a prefix with exactly-once processing.
Kafka
Event stream. Real-time trigger, one execution per message.
REST API
HTTP API. A
?updated_since filter with a KV watermark, or a scheduled full re-index.Elasticsearch
Search engine migration. Scroll the whole index, then cut over with a parallel run.
OpenSearch
Search engine migration. Scroll the whole index, then cut over with a parallel run.
RabbitMQ
AMQP queue. Real-time trigger, one execution per message, delete events routed to delete-batch.
Shopify
E-commerce platform. Native
updatedAtMin incremental sync, webhooks for real-time and deletes.