Your side project needs search. You looked at Elasticsearch — minimum 2GB RAM, Java dependency, complex cluster setup. You looked at Algolia — $1/1000 records/month adds up fast. ZincSearch is a single Go binary that gives you Elasticsearch-compatible search on 50MB of RAM.
What ZincSearch Actually Does
ZincSearch (now called OpenObserve for the observability use case) is an open-source search engine written in Go. It provides full-text search with an Elasticsearch-compatible API, a built-in web UI for data exploration, and S3-compatible storage for cost-effective data retention.
The design philosophy: make search accessible to everyone, not just teams with DevOps engineers. One binary, one command to start, built-in UI for exploring data. No JVM, no cluster coordination, no YAML configuration files.
ZincSearch supports Elasticsearch-compatible ingest and search APIs, so existing tools and libraries work with minimal changes. Open-source under Apache 2.0.
Quick Start
# Single binary — download and run
mkdir -p data
ZINC_FIRST_ADMIN_USER=admin ZINC_FIRST_ADMIN_PASSWORD=Complexpass#123 \
zinc server --data ./data
# Or Docker
docker run -d -p 4080:4080 \
-e ZINC_FIRST_ADMIN_USER=admin \
-e ZINC_FIRST_ADMIN_PASSWORD=Complexpass#123 \
public.ecr.aws/zinclabs/zinc:latest
Index a document:
curl -u admin:Complexpass#123 \
-X POST http://localhost:4080/api/default/articles/_json \
-d '[
{
"title": "Getting Started with Go",
"body": "Go is a statically typed language designed at Google...",
"tags": ["go", "tutorial"],
"published": "2026-03-15"
},
{
"title": "Building REST APIs in Go",
"body": "Learn how to build production-ready REST APIs using Go...",
"tags": ["go", "api", "rest"],
"published": "2026-03-20"
}
]'
Search (Elasticsearch-compatible):
curl -u admin:Complexpass#123 \
http://localhost:4080/es/articles/_search -d '{
"query": {
"match": { "title": "REST API" }
},
"highlight": {
"fields": { "title": {} }
}
}'
3 Practical Use Cases
1. Application Log Search
# Ship logs with Fluent Bit (Elasticsearch output works directly)
[OUTPUT]
Name es
Host localhost
Port 4080
Index app-logs
HTTP_User admin
HTTP_Passwd Complexpass#123
Then search logs via the built-in UI at http://localhost:4080 or API.
2. Product Search for E-Commerce
curl -u admin:Complexpass#123 \
http://localhost:4080/es/products/_search -d '{
"query": {
"bool": {
"must": { "match": { "name": "wireless headphones" } },
"filter": {
"range": { "price": { "lte": 100 } }
}
}
},
"sort": [{ "rating": "desc" }],
"size": 10
}'
3. Full-Text Search for Documentation Sites
// Index your docs on build
const docs = glob.sync('docs/**/*.md').map(file => ({
path: file,
title: extractTitle(file),
content: fs.readFileSync(file, 'utf8'),
section: file.split('/')[1]
}));
await fetch('http://localhost:4080/api/default/docs/_json', {
method: 'POST',
headers: {
'Authorization': 'Basic ' + btoa('admin:Complexpass#123'),
'Content-Type': 'application/json'
},
body: JSON.stringify(docs)
});
Why This Matters
Search shouldn't require a dedicated infrastructure team. ZincSearch brings full-text search to the 99% of projects that don't need Elasticsearch's scale but do need its query capabilities. One binary, 50MB RAM, Elasticsearch-compatible API, built-in UI. That's the entire ops story.
Need custom data extraction or web scraping solutions? I build production-grade scrapers and data pipelines. Check out my Apify actors or email me at spinov001@gmail.com for custom projects.
Follow me for more free API discoveries every week!
Top comments (0)