Elasticsearch
Replace VitNode's default Postgres search provider with Elasticsearch or OpenSearch and rebuild your index safely.
Use Elasticsearch when your site-wide search needs fuzzy matching, custom ranking, or a search cluster separate from Postgres. VitNode keeps Postgres as the canonical index; this adapter mirrors it, so switching is pleasantly boring.
Install the adapter
Run this in the app or API workspace that owns vitnode.api.config.ts.
bun add @vitnode/elasticsearch@canarypnpm add @vitnode/elasticsearch@canarynpm install @vitnode/elasticsearch@canaryAdd the cluster URL and adapter
Set ELASTICSEARCH_NODE to your Elasticsearch or OpenSearch endpoint, then
register the adapter in the API config.
ELASTICSEARCH_NODE=http://localhost:9200import { ElasticsearchSearchAdapter } from '@vitnode/elasticsearch'
export const vitNodeApiConfig = buildApiConfig({
search: {
adapter: ElasticsearchSearchAdapter({
node: process.env.ELASTICSEARCH_NODE,
index: 'vitnode',
}),
},
plugins: [blogApiPlugin()],
})For Elastic Cloud, use cloudId and apiKey instead of node. The adapter
also accepts username and password for a self-hosted secured cluster.
Rebuild the mirror
Restart the API, then open Core → Advanced → Search in the AdminCP and run Rebuild index. New changes are mirrored automatically; the rebuild fills the historical records already in Postgres.
Keep Postgres
Do not delete core_search_index. It remains VitNode's source of truth and
lets you switch providers without losing your map back home.