docs-site/content/0.21.0/api/cluster-operations.md
Creates a point-in-time snapshot of a Typesense node's state and data in the specified directory.
You can then backup the snapshot directory that gets created and later restore it as a data directory, as needed.
<Tabs :tabs="['JavaScript','PHP','Python','Ruby','Dart','Java','Shell']"> <template v-slot:JavaScript>client.operations.perform('snapshot', {'snapshot_path': '/tmp/typesense-data-snapshot'})
$client->operations->perform("snapshot", ["snapshot_path" => "/tmp/typesense-data-snapshot"]);
client.operations.perform('snapshot', {'snapshot_path': '/tmp/typesense-data-snapshot'})
client.operations.perform('snapshot', {'snapshot_path': '/tmp/typesense-data-snapshot'})
await client.operations.createSnapshot('/tmp/typesense-data-snapshot');
HashMap<String, String> query = new HashMap<>();
query.put("snapshot_path","/tmp/typesense-data-snapshot");
client.operations.perform("snapshot",query);
curl "http://localhost:8108/operations/snapshot?snapshot_path=/tmp/typesense-data-snapshot" -X POST \
-H "Content-Type: application/json" \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}"
{
"success": true
}
POST ${TYPESENSE_HOST}/operations/snapshot
| Parameter | Required | Description |
|---|---|---|
| snapshot_path | yes | The directory on the server where the snapshot should be saved. |
Triggers a follower node to initiate the raft voting process, which triggers leader re-election.
The follower node that you run this operation against will become the new leader, once this command succeeds.
<Tabs :tabs="['JavaScript','PHP','Python','Ruby','Dart','Java','Shell']"> <template v-slot:JavaScript>client.operations.perform('vote')
$client->operations->perform("vote");
client.operations.perform('vote')
client.operations.perform('vote')
await client.operations.initLeaderElection();
client.operations.perform("vote");
curl "http://localhost:8108/operations/vote" -X POST \
-H "Content-Type: application/json" \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}"
{
"success": true
}
POST ${TYPESENSE_HOST}/operations/vote
Enable logging of requests that take over a defined threshold of time.
Default: -1 which disables slow request logging.
Slow requests are logged to the primary log file, with the prefix SLOW REQUEST.
await client.operations.toggleSlowRequestLog(Duration(seconds: 2));
curl "http://localhost:8108/config" \
-X POST \
-H 'Content-Type: application/json' \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}" \
-d '{"log-slow-requests-time-ms": 2000}'
{
"success": true
}
POST ${TYPESENSE_HOST}/config
Get current RAM, CPU, Disk & Network usage metrics.
<Tabs :tabs="['Dart','Java','Shell']"> <template v-slot:Dart>await client.metrics.retrieve();
client.metrics.retrieve();
curl "http://localhost:8108/metrics.json" \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}"
{
"system_cpu1_active_percentage": "0.00",
"system_cpu2_active_percentage": "0.00",
"system_cpu3_active_percentage": "0.00",
"system_cpu4_active_percentage": "0.00",
"system_cpu_active_percentage": "0.00",
"system_disk_total_bytes": "1043447808",
"system_disk_used_bytes": "561152",
"system_memory_total_bytes": "2086899712",
"system_memory_used_bytes": "1004507136",
"system_network_received_bytes": "1466",
"system_network_sent_bytes": "182",
"typesense_memory_active_bytes": "29630464",
"typesense_memory_allocated_bytes": "27886840",
"typesense_memory_fragmentation_ratio": "0.06",
"typesense_memory_mapped_bytes": "69701632",
"typesense_memory_metadata_bytes": "4588768",
"typesense_memory_resident_bytes": "29630464",
"typesense_memory_retained_bytes": "25718784"
}
GET ${TYPESENSE_HOST}/metrics.json
Get stats about API endpoints.
This endpoint returns average requests per second and latencies for all requests in the last 10 seconds.
<Tabs :tabs="['Dart','Shell']"> <template v-slot:Dart>await client.stats.retrieve();
curl "http://localhost:8108/stats.json" \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}"
{
"latency_ms": {
"GET /collections/products": 0.0,
"POST /collections": 4.0,
"POST /collections/products/documents/import": 1166.0
},
"requests_per_second": {
"GET /collections/products": 0.1,
"POST /collections": 0.1,
"POST /collections/products/documents/import": 0.1
}
}
GET ${TYPESENSE_HOST}/stats.json
Get health information about a Typesense node.
<Tabs :tabs="['Dart','Shell']"> <template v-slot:Dart>await client.health.retrieve();
curl "http://localhost:8108/health"
{
"status": "ok"
}
GET ${TYPESENSE_HOST}/health