Configure Search API

Aidbox Search API can be configured in many ways. This page explains the difference between general types of Search API.

Jsonpath vs jsonknife

Aidbox has two engines to search: jsonpath and jsonknife.

The engine is responsible for SQL generation for search operations. SQL by jsonpath and jsonknife is different for search parameter types: date, number, quantity, reference, string, token, uri. _lastUpdated, _createdAt search parameters and :missing modifier searches are also differs by engine.

jsonpath-engine:

  • supported by PostgreSQL without external extensions, can be used with managed PostgreSQL, e.g. Azure PostgreSQL

  • better performance for string search parameters and all string-related search (e.g. :text modifier)*

  • will be supported as main engine

jsonknife:

  • is an external extension, can not be used with managed PostgreSQL

  • better performance for dates, number and quantity search parameters*

*using indexes makes performance approximately the same

Set engine

Use BOX_SEARCH_ENGINE environment variable to choose engine. The default is knife.

BOX_SEARCH_ENGINE="jsonpath" # or "knife"

zen-lang is a powerful DSL language to configure Aidbox, validate profiles, and search. It allows you to set up search parameters from IGs automatically, make your own search parameters and indexes associated with them.

To enable zen-search, use BOX_SEARCH_ZEN__FHIR=true and BOX_SEARCH_RESOURCE__COMPAT=false to use preferred version of zen-search (backward compatibility environment variable).

BOX_SEARCH_ZEN__FHIR=true
BOX_SEARCH_RESOURCE__COMPAT=false # default is true

How to make my Zen Search Parameter in configuration project?

Follow this guide.

Indexes for SearchParameters

You can also auto-generate indexes for SearchParameter:

Last updated

#2416:

Change request updated