Who This Is For
Solo developers and small teams who need real-time search capabilities from their MySQL databases but lack DevOps resources or backend engineering bandwidth. This recipe is ideal for indie hackers, bootstrapped SaaS founders, and no-code builders who want to unlock full-text search without managing infrastructure.
What You Get
A ready-to-import Make.com scenario that:
- Watches for new or updated rows in a MySQL table
- Transforms the data into a structured JSON format
- Sends that data to an Elasticsearch index in real-time
- Requires zero custom code or server setup
This automation powers search features for apps, dashboards, and internal tools — all without touching a terminal or writing a single line of backend code.
Why It Matters
Real-time search is table stakes for modern apps, but setting up Elasticsearch is notoriously complex. This recipe cuts through the noise by:
- Removing DevOps bottlenecks
- Lowering infrastructure friction
- Enabling rapid prototyping and MVP testing
Whether you're building a lead magnet, a niche calculator, or a data-backed comparison page, this automation makes your data searchable without slowing you down.
Trigger → Steps → Outcome
Trigger: New or updated row in a MySQL table (via webhook or polling)
Steps:
- Detect changes using a MySQL trigger or Make.com polling
- Fetch the changed row(s)
- Map fields to an Elasticsearch-compatible JSON structure
- Send the data to your Elasticsearch index via REST API
Outcome: Your MySQL data is searchable in Elasticsearch within seconds, with no backend code or DevOps setup.
Importable Make.com Scenario (JSON)
{
"name": "MySQL to Elasticsearch Sync",
"modules": [
{
"id": "trigger",
"type": "webhooks",
"action": "catch_hook",
"label": "Catch New MySQL Row"
},
{
"id": "transform",
"type": "tools",
"action": "json_transform",
"input": {
"template": "{\n \"id\": {{id}},\n \"title\": \"{{title}}\",\n \"content\": \"{{content}}\",\n \"created_at\": \"{{created_at}}\"\n}"
},
"label": "Map to Elasticsearch Format"
},
{
"id": "send",
"type": "http",
"action": "make_request",
"input": {
"url": "https://your-elasticsearch-endpoint.com/index/_doc/{{id}}",
"method": "PUT",
"headers": {
"Content-Type": "application/json",
"Authorization": "ApiKey YOUR_API_KEY"
},
"body": "{{transform.output}}"
},
"label": "Send to Elasticsearch"
}
]
}
Step-by-Step Setup Guide
Set Up Your MySQL Trigger
- Use a tool like Zapier MySQL integration or a simple polling module in Make.com to detect new or updated rows.
Import the Scenario
- Copy the JSON above into Make.com's scenario importer.
- Adjust field mappings to match your table schema.
Configure Elasticsearch
- Create an index in your Elasticsearch instance.
- Generate an API key with write permissions.
Test and Deploy
- Insert a test row in your MySQL table.
- Confirm it appears in Elasticsearch within seconds.
Monitor and Iterate
- Use Make.com’s logs to monitor sync performance.
- Add filters or transformations as needed.
Troubleshooting FAQ
Q: How do I handle deletes in MySQL? A: Add a separate trigger that sends a DELETE request to Elasticsearch when a row is removed.
Q: Can this work with hosted MySQL (e.g., PlanetScale, Supabase)? A: Yes — just ensure your connection settings are correct and your host allows outbound webhooks.
Q: What if my data has nested fields? A: Modify the JSON transform step to flatten or nest fields as needed for your Elasticsearch mapping.
Q: Do I need to manage Elasticsearch scaling? A: No — hosted solutions like Elastic Cloud handle that for you.
Next Step: Monetise With Search
Once your data is synced, you can build:
Ready to ship faster? Grab this recipe and start indexing today — no code, no servers, no stress.
👉 Download the full Make.com scenario JSON and get your data searchable in under 10 minutes.