
Meilisearch là gì? Công cụ tìm kiếm nguồn mở tốc độ cao
Meilisearch là công cụ tìm kiếm toàn văn mã nguồn mở, được viết bằng Rust, thiết kế dành riêng cho developer và non-technical users. Với khả năng trả kết quả chỉ trong 50ms, typo tolerance thông minh và giao diện API đơn giản, Meilisearch đang trở thành lựa chọn phổ biến để thêm chức năng tìm kiếm cho website, ứng dụng và database — khám phá tại GitHub Meilisearch.

Khác với các search engine phức tạp như Elasticsearch yêu cầu cấu hình nhiều, Meilisearch hoạt động theo nguyên tắc “works out of the box” — cài đặt xong là dùng được ngay. Đây là lý do nó phù hợp với startup, indie hacker và các dự án cần search nhanh mà không muốn đầu tư quá nhiều thời gian vận hành.
Tính năng nổi bật
- Typo tolerance tự động — Gõ sai chính tả vẫn tìm được kết quả đúng
- Prefix search — Gợi ý kết quả ngay khi gõ từng ký tự
- Việt hóa tốt — Hỗ trợ tiếng Việt phân tách từ thông minh
- Synonyms — Định nghĩa từ đồng nghĩa dễ dàng
- Faceted search — Lọc kết quả theo category, giá, ngày
- Filter & sort — Sắp xếp và lọc dữ liệu theo nhiều trường
- Tốc độ 50ms — Kết quả phản hồi gần như tức thì
- No config phức tạp — Default settings hoạt động tốt
Cài đặt Meilisearch
Cài đặt rất đơn giản, chỉ cần download binary:
curl -L https://install.meilisearch.com | sh
./meilisearch
Hoặc dùng Docker:
docker run -it --rm
-p 7700:7700
-e MEILI_MASTER_KEY=my_master_key
-v $(pwd)/meili_data:/meili_data
getmeili/meilisearch:v1.6
Sau đó Meilisearch chạy trên port 7700, sẵn sàng nhận data. Dễ nhất là dùng official quick start guide với dataset mẫu có sẵn.
Đưa data vào Meilisearch
Sử dụng REST API hoặc SDK client. Thêm documents:
curl -X POST 'http://localhost:7700/indexes/products/documents'
-H 'Authorization: Bearer my_master_key'
-H 'Content-Type: application/json'
--data-binary '[
{
"id": 1,
"name": "iPhone 15 Pro",
"price": 27990000,
"category": "Điện thoại"
},
{
"id": 2,
"name": "MacBook Air M3",
"price": 32990000,
"category": "Laptop"
}
]'
Index được tạo tự động khi bạn thêm documents. Meilisearch cho phép document có cấu trúc không đồng nhất — mỗi record là một object JSON.
Tìm kiếm cơ bản
curl -X POST 'http://localhost:7700/indexes/products/search'
-H 'Authorization: Bearer my_master_key'
-H 'Content-Type: application/json'
--data-binary '{
"q": "iphone",
"limit": 5
}'
Kết quả trả về dạng JSON với ranked matches. Meilisearch tự động xếp hạng dựa trên độ liên quan, với nhiều thuật toán ranking mặc định.

So sánh với Elasticsearch
Cả hai đều là search engine mã nguồn mở, nhưng có triết lý khác nhau:
| Tiêu chí | Meilisearch | Elasticsearch |
|---|---|---|
| Ngôn ngữ | Rust | Java |
| Dễ sử dụng | Cao, zero config | Phức tạp, cần tuning |
| Resource usage | Nhẹ, ~1GB RAM | Nặng, cần nhiều RAM |
| Tốc độ trả kết quả | ~50ms | ~100ms+ |
| Typo tolerance | Mặc định, thông minh | Phải cấu hình |
| Phù hợp | SMB, startup, app vừa | Enterprise, big data |
| Analytics | Hiện tại có insight | Mạnh mẽ hơn |
Elasticsearch mạnh hơn về scale khổng lồ và analytic phức tạp, nhưng vận hành và chi phí tài nguyên cao. Meilisearch phù hợp khi bạn cần search tốt, nhanh, đơn giản cho app hoặc website có quy mô vừa và nhỏ.
Filtering và Faceted Search
Meilisearch hỗ trợ filter phức tạp bằng cú pháp dễ hiểu:
{
"q": "smartphone",
"filter": "price > 10000000 AND category = 'Điện thoại'",
"facets": ["category", "brand"],
"sort": ["price:desc"]
}
Faceted search tự động tính counts cho mỗi facet value, giúp xây dựng UI lọc theo thương hiệu, giá, size… Hỗ trợ cả geo search cho ứng dụng bản đồ, delivery.
Client SDKs
Meilisearch có SDK cho hầu hết ngôn ngữ:
- JavaScript —
meilisearch - Python —
meilisearch - Rust —
meilisearch-sdk - Go —
github.com/meilisearch/meilisearch-go - PHP, .NET, Java, Ruby, Swift, Dart
Ví dụ dùng Python client:
from meilisearch import Client
client = Client('http://localhost:7700', 'my_master_key')
index = client.index('products')
# Thêm documents
index.add_documents([
{'id': 1, 'name': 'iPhone 15 Pro', 'category': 'Điện thoại'}
])
# Tìm kiếm
results = index.search('iphone', {'limit': 5})
print(results['hits'])
Triển khai production
Cho production deployment, cần chú ý:
- Master key — Bảo vệ endpoints bằng API key (mặc định tắt)
- Persistent volume — Mount dữ liệu ra ngoài container (Docker)
- Backup — Dump database định kỳ qua API
- Snapshot — Tự động snapshot khi dump
- High availability — Multi-node cho quy mô lớn (version enterprise)
Meilisearch cung cấp endpoint /dumps để tạo backup binary, và /snapshots cho Real-time backups. Với scale nhỏ vừa, một instance single-node là đủ.

Khi nào nên dùng Meilisearch?
Meilisearch lý tưởng cho:
- E-commerce — Tìm kiếm sản phẩm với filter giá, thương hiệu
- Blog/News — Tìm kiếm bài viết, thẻ tag nhanh
- Documentation — Search tài liệu kỹ thuật với typo tolerance
- App nội bộ — Tìm kiếm record trong CRM, ERP
- Job board — Lọc việc làm theo kỹ năng, địa điểm
Nếu bạn đang dùng PostgreSQL LIKE query hoặc MySQL FULLTEXT và gặp giới hạn về tốc độ, Meilisearch là nâng cấp tự nhiên. Nó cũng là lựa chọn tốt hơn Elasticsearch cho phần lớn dự án quy mô vừa — ít vận hành hơn, chi phí thấp hơn, mà vẫn đáp ứng tốt nhu cầu search.
