Get Suggested Indexes
Last updated
Was this helpful?
Last updated
Was this helpful?
Was this helpful?
Since version 2211, Aidbox can suggest indexes for Search API.
Index suggestion API is in the draft stage.
Supported FHIR Search parameter types:
string
number
date
token
quantity
reference
uri
Supported special FHIR parameters:
_id
_ilike
_text
_content
_lastUpdated
Supported Aidbox search:
_createdAt
Not supported:
zen Search Parameters
_filter
include, _revinclude
chained Search Parameters
Required parameters: resource-type
and search-param
.
POST /rpc
method: aidbox.index/suggest-index
params:
resource-type: <resourceType>
search-param: <searchParameter>
Example:
POST /rpc
method: aidbox.index/suggest-index
params:
resource-type: Observation
search-param: date
Result:
result:
- index-name: observation_date_param_knife_date_min_tstz
name: date
resource-type: Observation
statement: >-
CREATE INDEX CONCURRENTLY IF NOT EXISTS
"observation_date_param_knife_date_min_tstz" ON "observation" USING btree
((knife_extract_min_timestamptz("observation".resource,
'[["effective","Period","start"],["effective","Period","end"],["effective","dateTime"],["effective","Timing","event"],["effective","instant"]]'))
)
subtypes:
- null
- eq
- ne
- lt
- le
- btw
type: date
- index-name: observation_date_param_knife_date_max_tstz
name: date
resource-type: Observation
statement: >-
CREATE INDEX CONCURRENTLY IF NOT EXISTS
"observation_date_param_knife_date_max_tstz" ON "observation" USING btree
((knife_extract_max_timestamptz("observation".resource,
'[["effective","Period","start"],["effective","Period","end"],["effective","dateTime"],["effective","Timing","event"],["effective","instant"]]'))
)
subtypes:
- null
- eq
- ne
- gt
- ge
- btw
type: date
Suggested two indexes: first one to search using lt
, le
and eq
prefixes, second one to search usinggt
, ge
, eq
prefixes.
You can get all indexes for specific query using suggest-index-query.
Required parameters: resource-type
and query
.
POST /rpc
method: aidbox.index/suggest-index-query
params:
resource-type: <resourceType>
query: <query>
Example:
POST /rpc
method: aidbox.index/suggest-index-query
params:
resource-type: Observation
query: date=gt2022-01-01&_id=myid
Response:
result:
- index-name: observation_date_param_knife_date_min_tstz
name: date
resource-type: Observation
statement: >-
CREATE INDEX CONCURRENTLY IF NOT EXISTS
"observation_date_param_knife_date_min_tstz" ON "observation" USING btree
((knife_extract_min_timestamptz("observation".resource,
'[["effective","Period","start"],["effective","Period","end"],["effective","dateTime"],["effective","Timing","event"],["effective","instant"]]'))
)
subtypes:
- null
- eq
- ne
- lt
- le
- btw
type: date
- index-name: observation_date_param_knife_date_max_tstz
name: date
resource-type: Observation
statement: >-
CREATE INDEX CONCURRENTLY IF NOT EXISTS
"observation_date_param_knife_date_max_tstz" ON "observation" USING btree
((knife_extract_max_timestamptz("observation".resource,
'[["effective","Period","start"],["effective","Period","end"],["effective","dateTime"],["effective","Timing","event"],["effective","instant"]]'))
)
subtypes:
- null
- eq
- ne
- gt
- ge
- btw
type: date
- index-name: observation_resource_id
name: id
resource-type: Observation
statement: >-
CREATE INDEX CONCURRENTLY IF NOT EXISTS "observation_resource_id" ON
"observation" USING btree (("observation".id) )
subtypes:
- in
- null
type: id
Suggested indexes will increase performance of Observation.date and Observation._id.