Skip to main content

Web Interface (hanalyzer)

hanalyzer is the browser-based control surface for hlquery. It is a Vue application that talks to the hlquery HTTP API and provides screens for collection work, document inspection, search, access control, cluster links, diagnostics, and server monitoring.

Runtime Model

  • Default UI port: 8080 when launched through ./hanalyzer.
  • Default hlquery API target: http://localhost:9200.
  • Router mode: hash routing, so production URLs look like /#/collections and work when the built app is mounted under /, /hanalyzer/, or another static subdirectory.
  • Health guard: most non-collection routes check /health before navigation and redirect to /#/status when the server is unavailable.
  • Config sources: hanalyzer.conf.js for build/dev defaults and public/hanalyzer.config.json for runtime config.

Start Locally

cd etc/hanalyzer
npm install
./hanalyzer

Run with a different API target:

./hanalyzer --api http://localhost:9200 --port 8080

For development:

npm run dev

For a production build:

npm run build
npm run preview

Do not open dist/index.html with file://; serve the build over HTTP or HTTPS.

Routes

The current route table lives in etc/hanalyzer/src/router.js.

Hash routeViewPurpose
/#/redirectRedirects to collections.
/#/collectionsCollectionsList, filter, and open collections.
/#/collections/createCreate CollectionCreate a collection and schema.
/#/collections/{name}Collection DocumentsBrowse collection documents.
/#/collections/{name}/{page}Collection DocumentsOpen a numeric document page.
/#/collections/{name}/synonymsCollection DocumentsManage collection synonyms.
/#/collections/{name}/stopwordsCollection DocumentsManage collection stopwords.
/#/collections/{name}/search-syntaxCollection Search SyntaxInspect supported query syntax.
/#/collections/{name}/schemaCollection SchemaInspect collection fields/schema.
/#/collections/{name}/detailsCollection DetailsCollection metadata and actions.
/#/collections/{name}/documents/addAdd DocumentAdd a document.
/#/collections/{name}/documents/{docId}Document DetailInspect one document.
/#/collections/{name}/synonyms/addAdd SynonymAdd a collection synonym.
/#/collections/{name}/stopwords/addAdd StopwordAdd a collection stopword.
/#/searchSearchBuild and run searches.
/#/search/collections/{query}Search CollectionsSearch collections by query.
/#/search/resultsSearch ResultsDisplay global or collection search results.
/#/sqlSQLRun SQL-style queries.
/#/aliasesAliasesList aliases.
/#/aliases/{collection}AliasesFilter aliases by collection.
/#/aliases/createCreate AliasCreate an alias.
/#/accessAccess ManagementManage keys and users.
/#/globalsGlobalsManage global synonyms and stopwords.
/#/globals/synonyms/addAdd Global SynonymAdd a global synonym.
/#/globals/stopwords/addAdd Global StopwordAdd a global stopword.
/#/dashboardServer ProfileServer profile, metrics, storage, and operational summaries.
/#/server-profileredirectRedirects to dashboard.
/#/connectionsConnectionsActive connection view.
/#/linksCluster LinksCluster link overview.
/#/links/{node}Cluster LinksNode-specific link view.
/#/links/{node}/{collection}Cluster LinksNode and collection-specific link view.
/#/statusServer StatusConnection and health state.
/#/testsTestsUI-driven API tests.

Unknown routes render the not-found view.

API Coverage

hanalyzer uses the public hlquery routes documented in the API section:

  • Collections: GET/POST /collections, GET/DELETE /collections/{collection}, and POST /collections/{collection}/update.
  • Documents: list, add, import, inspect, update, delete, context, export, facets, and maybe suggestions under /collections/{collection}/documents.
  • Search: /search, /multi_search, /sql, /collections/{collection}/documents/search, and vector search where UI flows expose it.
  • Relevance controls: collection/global synonyms, stopwords, aliases, overrides/curations where available.
  • Operations: /health, /ready, /stats, /metrics, /metrics/history, /rocksdb, /connections, /links, /keys, /users, /modules, and tests-related calls.

Deployment Notes

The build uses relative assets and hash routing, so a basic static file server is enough:

server {
listen 80;
server_name hanalyzer.example.com;

root /path/to/hlquery/etc/hanalyzer/dist;
index index.html;

location / {
try_files $uri $uri/ /index.html;
}
}

If the browser cannot reach hlquery directly, proxy API calls through the same origin and point hanalyzer at that proxy target.