Search & metadata
Sorting results
Order Typesense results with sort_by.
The sort_by parameter controls the order of your search results. You can sort by any field in ascending or descending order, and combine up to three fields for multi-level sorting.
Quick start
Here’s how to sort transactions by creation date in descending order (newest first):
curl -X POST "http://localhost:5001/search/transactions" \
-H "X-blnk-key: <api-key>" \
-H "Content-Type: application/json" \
-d '{
"q": "*",
"sort_by": "created_at:desc"
}'const response = await blnk.Search.search(
{
q: "*",
sort_by: "created_at:desc",
},
'transactions',
);results, _, _ := client.Search.SearchDocument(
blnkgo.SearchParams{Q: "*", SortBy: "created_at:desc"},
blnkgo.Transactions,
)response = blnk.search.search(
{
"q": "*",
"sort_by": "created_at:desc",
},
"transactions",
)ApiResponse<JsonNode> response = blnk.search().search(
SearchParams.create()
.q("*")
.sortBy("created_at:desc"),
"transactions");Sort syntax
Basic sorting
Sort by a single field using the format field:direction:
# Sort by amount (lowest to highest)
"sort_by": "amount:asc"
# Sort by creation date (newest to oldest)
"sort_by": "created_at:desc"
Sort directions
| Direction | Description | Example |
|---|---|---|
asc | Ascending order (A-Z, 0-9, oldest to newest) | amount:asc |
desc | Descending order (Z-A, 9-0, newest to oldest) | created_at:desc |
Multi-field sorting
Combine up to three fields separated by commas. Fields are applied in order: the first field is primary, second breaks ties, third breaks remaining ties:
curl -X POST "http://localhost:5001/search/transactions" \
-H "X-blnk-key: <api-key>" \
-H "Content-Type: application/json" \
-d '{
"q": "*",
"sort_by": "status:asc,created_at:desc,amount:desc"
}'const response = await blnk.Search.search(
{
q: "*",
sort_by: "status:asc,created_at:desc,amount:desc",
},
'transactions',
);results, _, _ := client.Search.SearchDocument(
blnkgo.SearchParams{Q: "*", SortBy: "status:asc,created_at:desc,amount:desc"},
blnkgo.Transactions,
)response = blnk.search.search(
{
"q": "*",
"sort_by": "status:asc,created_at:desc,amount:desc",
},
"transactions",
)ApiResponse<JsonNode> response = blnk.search().search(
SearchParams.create()
.q("*")
.sortBy("status:asc,created_at:desc,amount:desc"),
"transactions");This sorts by:
- Status (ascending) - groups by status first
- Created date (descending) - within each status, newest first
- Amount (descending) - for same status and date, highest amount first
Common sorting patterns
Sort by creation date
Show the most recent records first, useful for transaction monitoring.
curl -X POST "http://localhost:5001/search/transactions" \
-H "X-blnk-key: <api-key>" \
-H "Content-Type: application/json" \
-d '{
"q": "*",
"sort_by": "created_at:desc"
}'const response = await blnk.Search.search(
{
q: "*",
sort_by: "created_at:desc",
},
'transactions',
);results, _, _ := client.Search.SearchDocument(
blnkgo.SearchParams{Q: "*", SortBy: "created_at:desc"},
blnkgo.Transactions,
)response = blnk.search.search(
{
"q": "*",
"sort_by": "created_at:desc",
},
"transactions",
)ApiResponse<JsonNode> response = blnk.search().search(
SearchParams.create()
.q("*")
.sortBy("created_at:desc"),
"transactions");Sort by amount
Find the largest transactions first for financial analysis.
curl -X POST "http://localhost:5001/search/transactions" \
-H "X-blnk-key: <api-key>" \
-H "Content-Type: application/json" \
-d '{
"q": "*",
"sort_by": "amount:desc"
}'const response = await blnk.Search.search(
{
q: "*",
sort_by: "amount:desc",
},
'transactions',
);results, _, _ := client.Search.SearchDocument(
blnkgo.SearchParams{Q: "*", SortBy: "amount:desc"},
blnkgo.Transactions,
)response = blnk.search.search(
{
"q": "*",
"sort_by": "amount:desc",
},
"transactions",
)ApiResponse<JsonNode> response = blnk.search().search(
SearchParams.create()
.q("*")
.sortBy("amount:desc"),
"transactions");Best practices
- Default to newest first: Use
created_at:descfor time-sensitive data like transactions. - Combine with filtering: Sort filtered results for more targeted analysis.
- Limit multi-field sorting: Use 2-3 fields maximum to avoid complexity.