Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create a minimal working Algolia example — index records and search them. Use when starting a new Algolia integration, testing your setup, or learning the saveObjects/searchSingleIndex pattern. Trigger: "algolia hello world", "algolia example", "algolia quick start", "first algolia search".
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 17% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 239% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 25% | 0% |
| case-21 | ✓→✓ | = Same ✓ | 67% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 18% | 0% |
Index records into Algolia and search them back — the two fundamental operations. Uses the algoliasearch v5 client where all methods live on the client directly (no initIndex).
algoliasearch v5 installed (npm install algoliasearch)ALGOLIA_APP_ID and ALGOLIA_ADMIN_KEY environment variables setalgolia-install-auth for setuptypescriptimport { algoliasearch } from 'algoliasearch'; const client = algoliasearch( process.env.ALGOLIA_APP_ID!, process.env.ALGOLIA_ADMIN_KEY! ); // saveObjects adds or replaces records. Each must have objectID // (or Algolia auto-generates one). const { taskID } = await client.saveObjects({ indexName: 'movies', objects: [ { objectID: '1', title: 'The Matrix', year: 1999, genre: 'sci-fi' }, { objectID: '2', title: 'Inception', year: 2010, genre: 'sci-fi' }, { objectID: '3', title: 'Pulp Fiction', year: 1994, genre: 'crime' }, ], }); // Wait for indexing to complete before searching await client.waitForTask({ indexName: 'movies', taskID }); console.log('Indexing complete.');
typescript// Basic search — Algolia searches all searchableAttributes by default const { hits } = await client.searchSingleIndex({ indexName: 'movies', searchParams: { query: 'matrix' }, }); console.log(`Found ${hits.length} results:`); hits.forEach(hit => { // _highlightResult shows which parts matched console.log(` ${hit.title} (${hit.year})`); });
typescript// Settings define how Algolia ranks results await client.setSettings({ indexName: 'movies', indexSettings: { searchableAttributes: ['title', 'genre'], // Fields to search attributesForFaceting: ['genre', 'year'], // Filterable fields customRanking: ['desc(year)'], // Tie-breaker: newer first attributesToRetrieve: ['title', 'year', 'genre'],// Fields returned in hits }, });
Indexing complete.
Found 1 results:
The Matrix (1999)| Error | Cause | Solution | |-------|-------|----------| | Invalid Application-ID or API key | Wrong credentials | Verify in dashboard > Settings > API Keys | | Record is too big | Object > 10KB (free) or 100KB (paid) | Reduce record size or split into smaller records | | Index does not exist (on search) | Index not created yet | saveObjects auto-creates the index | | taskID never resolves | Indexing queue backlog | Check dashboard > Indices > Operations |
typescript// Search multiple indices in one API call const { results } = await client.search({ requests: [ { indexName: 'movies', query: 'inception' }, { indexName: 'actors', query: 'inception' }, ], }); results.forEach(result => { if ('hits' in result) { console.log(`${result.index}: ${result.hits.length} hits`); } });
typescript// browse returns up to 1000 records per call — use for data export const { hits, cursor } = await client.browse({ indexName: 'movies', browseParams: { hitsPerPage: 1000 }, }); console.log(`First page: ${hits.length} records`); // Use cursor to fetch next pages
typescript// Delete by objectID await client.deleteObject({ indexName: 'movies', objectID: '3' }); // Delete by query match await client.deleteBy({ indexName: 'movies', deleteByParams: { filters: 'genre:crime' }, });
Proceed to algolia-local-dev-loop for development workflow setup.
Other measured skills in the registry, with their headline benchmark lift.