Skip to main content
Version: 0.13.0

Quickstart

Run Lucenia, index some documents, and search them. About five minutes, one dependency, no cluster to provision and nobody to email first.

You need Docker. Nothing else — no account to create and no Java to install first.

note

A new node runs for 14 days without a license, so you can get to a result before deciding whether to go further. Nothing on this page asks you to register. See Trial license for what happens after that.


1. Start Lucenia

One command. There is no file to write first.

docker run -d --name lucenia -p 9200:9200 \
-e discovery.type=single-node \
-e LUCENIA_INITIAL_ADMIN_PASSWORD=QuickStart_2026! \
lucenia/lucenia:0.13.0

That is the whole installation. Nothing to provision and nothing to size.

Give it a few seconds, then check that it is up. Security is on by default, so this is HTTPS with a self-signed certificate — -k tells curl not to mind:

curl -k -u admin:QuickStart_2026! https://localhost:9200
{
"name" : "lucenia",
"cluster_name" : "lucenia-quickstart",
"version" : { "number" : "0.13.0", "distribution" : "skylite" },
"tagline" : "[SEARCH]...on your terms"
}
tip

Use a different LUCENIA_INITIAL_ADMIN_PASSWORD if you like — it has to pass a strength check, so keep the mix of cases, a digit and a symbol.


2. Index some documents

curl -k -u admin:QuickStart_2026! -X POST "https://localhost:9200/_bulk?refresh=true" \
-H "Content-Type: application/x-ndjson" -d '
{"index":{"_index":"articles","_id":"1"}}
{"title":"Cardioselective agents in post-infarction management","year":2024}
{"index":{"_index":"articles","_id":"2"}}
{"title":"Once-daily dosing and adherence in hypertension","year":2023}
{"index":{"_index":"articles","_id":"3"}}
{"title":"Peripheral oedema in long-term calcium channel therapy","year":2025}
'

3. Search them

curl -k -u admin:QuickStart_2026! "https://localhost:9200/articles/_search?pretty" \
-H "Content-Type: application/json" -d '
{
"query": { "match": { "title": "dosing adherence" } }
}'

Document 2 comes back first. That is a working search engine, four minutes in.


4. Now something a plain search engine will not do

Lucenia can strip sensitive data out of documents before they are indexed, so regulated values never land in an index in the clear. No model, no external service, and no configuration beyond naming a profile.

Create a pipeline:

curl -k -u admin:QuickStart_2026! -X PUT "https://localhost:9200/_ingest/pipeline/redact" \
-H "Content-Type: application/json" -d '
{
"processors": [ { "compliance": { "profile": "hipaa", "fields": ["notes"] } } ]
}'

Push a document through it:

curl -k -u admin:QuickStart_2026! -X POST "https://localhost:9200/_ingest/pipeline/redact/_simulate?pretty" \
-H "Content-Type: application/json" -d '
{
"docs": [
{ "_source": { "notes": "Patient SSN 123-45-6789, contact jane@example.com, DOB 1980-02-14." } }
]
}'

The simulated document comes back redacted, with a record of what was found. Inside the response's docs[0].doc._source:

{
"notes": "Patient SSN <US_SSN>, contact <EMAIL_ADDRESS>, DOB <DATE_OF_BIRTH>.",
"_compliance": {
"profile": "hipaa",
"total": 3,
"redacted": true,
"counts": { "us_ssn": 1, "email_address": 1, "date_of_birth": 1 }
}
}

Three identifiers detected and replaced. That ran inside your cluster — nothing was sent anywhere.


5. Connect from your app

curl proved the cluster works. Here is the same search — dosing adherence against the articles index you built in step 2 — from application code. Document 2 comes back, exactly as it did above.

pip install lucenia-py
from lucenia import Lucenia

client = Lucenia(
hosts=[{"host": "localhost", "port": 9200}],
http_auth=("admin", "QuickStart_2026!"),
use_ssl=True,
verify_certs=False,
ssl_show_warn=False,
)

response = client.search(
index="articles",
body={"query": {"match": {"title": "dosing adherence"}}},
)

for hit in response["hits"]["hits"]:
print(f"[{hit['_id']}] {hit['_source']['title']}")
warning

These snippets disable TLS verification, because the container generates its own certificate. That is fine against a throwaway local cluster and wrong everywhere else — each client page shows how to pass a CA bundle instead.

Hard-coding the password is likewise a quickstart shortcut. Read it from the environment before this becomes anything you keep.


Where to go next

You want toRead
Connect from code — Python, JavaScript or JavaLanguage clients
Search by meaning rather than by keywordSearch by meaning
Extract, chunk and embed documents on the way inContent processing
Give an agent durable memoryInference memory
Work with locations, shapes and road networksGeospatial
Redact and govern data properlyCompliance processor
Run this for realInstall and configure

Running it somewhere other than Docker

This page uses Docker because it is the shortest path to a running query. For anything you intend to keep:

Stopping

docker stop lucenia        # keep everything; `docker start lucenia` resumes
docker rm -f lucenia # discard the container and its data
warning

docker rm discards the data along with the container. Each node records its 14-day evaluation period alongside its data, so removing it starts a fresh cluster — and a fresh 14 days.