Limited Time Offer!
For Less Than the Cost of a Starbucks Coffee, Access All DevOpsSchool Videos on YouTube Unlimitedly.
Master DevOps, SRE, DevSecOps Skills!

Modern applications live or die by search quality.
But most tutorials assume you already have Docker, Kubernetes, Redis, Horizon, and a DevOps team.
Reality for many products (especially MVPs and growing platforms) is very different:
- One VM or shared server
- No Docker
- No queues yet
- Microservice backend
- Need fast, reliable search now
This guide shows how to build production-ready search in Laravel using Laravel Scout with Meilisearch or Typesense, without Docker, without queues, and without Horizonโand how to evolve it cleanly later.
Why This Guide Exists (And Why Most Tutorials Fail)
Most search guides fall into two extremes:
- Too basic โ โInstall X, it works magicallyโ
- Too enterprise โ โDeploy Elasticsearch with Docker + Kafka + 5 nodesโ
Whatโs missing is the middle path:
A setup that is:
- Simple
- Reliable
- Scalable later
- Suitable for real shared/basic servers
Thatโs exactly what weโll cover.
Understanding the Stack (In Plain English)
Before touching commands, letโs clarify the pieces.
Laravel Scout
Scout is Laravelโs search abstraction layer.
It:
- Converts Eloquent models into searchable documents
- Sends them to a search engine
- Lets you query search results using Laravel-friendly syntax
Scout does not store data itself.
Meilisearch and Typesense (What They Actually Are)
Both are modern, HTTP-based search engines designed to replace heavyweight Elasticsearch setups.
Meilisearch
- Focuses on excellent relevance out of the box
- Very easy to operate
- Minimal configuration
- Great for fast MVPs and small teams
Typesense
- Designed for filter-heavy, faceted search
- Extremely predictable performance
- Strong structured filtering (country/state/city/etc.)
- Slightly more setup effort, but very powerful
Both:
- Run as a single binary
- Expose HTTP APIs
- Do not require Docker
Can You Use Them Without Docker?
Short answer: Yes
Real answer: Yes, and many production teams do
Both Meilisearch and Typesense can run as:
- A systemd service
- A background process
- A single binary on your VM
Laravel talks to them over HTTP.
No containers. No orchestration. No drama.
Can You Use Them Without Queues or Horizon?
Also yes โ but understand the tradeoff
Without queues:
- Index updates happen synchronously
- That means:
- Creating or updating a record also updates the search index immediately
- The user request waits for indexing to finish
What this affects
- Writes feel slower
- Search reads remain fast
Reality check
For:
- MVPs
- Admin-driven systems
- Moderate write volume
๐ This is completely acceptable
You are not doing anything โwrongโ by starting this way.
The Correct Mental Model (This Is Important)
Search engines are read-optimized systems.
Your database is the source of truth
Your search index is a read model
That means:
- You do not query multiple microservices during search
- You do not perform joins at search time
- You flatten data into one searchable document
This is the single most important concept in scalable search.
Search in a Microservice Architecture (The Right Way)
The Wrong Way (Very Common Mistake)
โLetโs search doctors, then call hospital service, then location service, then specialization serviceโฆโ
This:
- Is slow
- Breaks under load
- Creates cascading failures
- Becomes impossible to scale
The Right Way: Search Read Model
You create one flattened document like:
{
"id": 123,
"name": "Dr. Amit Shah",
"specialization": "Cardiology",
"hospital_name": "City Heart Hospital",
"country": "India",
"state": "Gujarat",
"city": "Ahmedabad",
"experience_years": 12,
"rating": 4.6,
"is_available": true
}
This document:
- Is built once
- Indexed once
- Queried extremely fast
Search engines love this model.
Choosing Between Meilisearch and Typesense (Honest Comparison)
Choose Meilisearch If:
- You want fastest time to market
- You want great relevance without tuning
- Your filters are simple to moderate
- You want lowest operational overhead
Typical use cases
- Doctor listings
- Blog search
- Product catalogs (basic filters)
- Internal admin search
Choose Typesense If:
- Filters are the core UX
- Users constantly filter by:
- Country
- State
- City
- Category
- Availability
- You need consistent performance as data grows
Typical use cases
- Marketplaces
- Directories
- Location-based discovery platforms
- Heavily faceted search UIs
My Direct Recommendation for a โBasic Serverโ
If you want the safest start
Laravel Scout + Meilisearch
Why:
- Less tuning
- Fewer concepts
- Faster implementation
- Easier debugging
If your UI is filter-driven from day one
Laravel Scout + Typesense
Why:
- Designed specifically for that use case
- Filters feel โnativeโ
- No hacks later
Phase-Based Implementation Strategy (Very Important)
Phase 1: Simple, Clean, Working (No Docker, No Queues)
- Install Meilisearch or Typesense on the server
- Configure Laravel Scout
- Index only one core entity
- Keep indexing synchronous
This is not a shortcut โ itโs a valid architecture stage.
Phase 2: Add Queues (Still No Docker)
You do not need Horizon to use queues.
Use:
- Redis or database queue
- Supervisor
php artisan queue:work
This:
- Makes indexing async
- Removes write latency from user requests
- Is extremely common on shared/basic servers
You get 80% of Horizonโs benefits.
Phase 3: Horizon (Optional, Not Mandatory)
Horizon is:
- Monitoring
- Metrics
- Control UI
It does not make your system faster by itself.
Use it when:
- You want visibility
- You have multiple workers
- You want operational insight
SEO-Critical Advice (Why This Matters for Ranking)
This architecture:
- Improves page speed
- Reduces backend latency
- Enables fast filtering without reloads
- Improves Core Web Vitals
Google cares deeply about:
- UX
- Speed
- Stability
Search architecture directly impacts SEO rankings.
Common Mistakes to Avoid
- Indexing too many models at once
- Trying to replicate database joins in search
- Delaying search until โperfect infraโ
- Over-engineering early
- Ignoring future queue integration
Simple + correct beats complex + fragile.
Final Clear Recommendation
For easiest rollout on a basic server
Laravel Scout + Meilisearch
For filter-heavy, discovery-driven products
Laravel Scout + Typesense
Regardless of engine
- Build a flattened search read-model
- Start synchronous
- Add queues via Supervisor when needed
- Docker is optional, not mandatory
Closing Thought (From Real-World Experience)
Search is not about tools.
Itโs about data shape, architecture, and UX intent.
If you get those right:
- Meilisearch works beautifully
- Typesense works brilliantly
- Your system scales naturally
Start simple. Design smart. Evolve cleanly.



Leave a Reply