diff --git a/.claude/commands/check-links.md b/.claude/commands/check-links.md new file mode 100644 index 0000000000..04b5028bb2 --- /dev/null +++ b/.claude/commands/check-links.md @@ -0,0 +1,26 @@ +Scan the documentation for broken internal links, orphaned pages, and redirect chain issues. + +## Steps + +### 1. Broken internal links +Search all .mdx files (excluding `snippets/`, `reference/api_v0/`, `changelog/`) for markdown links matching the pattern `](/path...)`. For each link: +- Strip any anchor (`#...`) from the path +- Check if a corresponding .mdx file exists at that path +- If not, check if the path is covered by a redirect in docs.json +- Report any links that point to neither an existing file nor a redirect + +### 2. Orphaned pages +List all .mdx files under the main content directories (`getting_started/`, `learn/`, `reference/`, `resources/`, `guides/`) and check if each appears in the docs.json navigation. Exclude: +- `snippets/` (include files, expected orphans) +- `reference/api_v0/` (archived, in .mintignore) +- Files that are the target of an `openapi:` directive +- `home.mdx` (Mintlify landing page) + +### 3. Redirect chains +Check the `redirects` array in docs.json for chains: where a redirect's `destination` is itself a `source` of another redirect. Report any chains found. + +### 4. Missing nav pages +Check every page listed in docs.json navigation and verify the corresponding .mdx file exists on disk. + +## Output +Report findings grouped by category. For broken links, show the file containing the link and the broken target path. For orphaned pages, list the file paths. Keep the output concise. diff --git a/.claude/commands/check-redirects.md b/.claude/commands/check-redirects.md new file mode 100644 index 0000000000..43bf2b30f7 --- /dev/null +++ b/.claude/commands/check-redirects.md @@ -0,0 +1,45 @@ +Analyze redirects using real traffic data from Fathom Analytics. Finds missing redirects (old URLs people still visit) and unused redirects (redirects nobody hits). + +## Prerequisites + +Requires `FATHOM_API_KEY` and `FATHOM_SITE_ID` in `.env` at the repo root. + +## Steps + +### 1. Run the script + +Run `node scripts/check-missing-redirects.mjs` and wait for it to complete. The script: +- Fetches all `/docs/*` page views from Fathom Analytics (last 90 days) +- Fetches the production sitemap to know all live pages (including OpenAPI-generated routes) +- Walks local .mdx files for pages not yet deployed +- Compares traffic against known pages + existing redirects in docs.json +- Reports two lists: missing redirects and unused redirects +- Filters out junk URLs (trailing dots, double /docs/, internal Mintlify props, error pages) +- Only reports URLs with >= 10 views + +### 2. Review missing redirects + +For each missing redirect, find the best destination page: +- Search local .mdx files and docs.json navigation for the matching topic +- Check the production sitemap for similar paths +- Prefer the most specific match (e.g. `/guides/laravel_scout` -> `/getting_started/frameworks/laravel`) +- If no good match exists, redirect to the closest parent or overview page + +### 3. Review unused redirects + +These are redirects in docs.json that got zero traffic in 90 days. They are safe to remove to keep docs.json clean. Remove them from the `redirects` array. + +### 4. Apply changes + +- Add missing redirects to the `redirects` array in docs.json +- Remove unused redirects from docs.json +- Validate docs.json is still valid JSON +- Re-run the script to confirm 0 missing and 0 unused + +## Output + +Report: +- How many missing redirects were found and added (with the top 5 by traffic) +- How many unused redirects were removed +- Final redirect count in docs.json +- Confirmation that the re-run shows 0/0 diff --git a/.claude/commands/move-page.md b/.claude/commands/move-page.md new file mode 100644 index 0000000000..8e5a5f3cd9 --- /dev/null +++ b/.claude/commands/move-page.md @@ -0,0 +1,18 @@ +Move a documentation page from one path to another, handling all side effects. + +Arguments: $ARGUMENTS (format: ` `, e.g. `resources/self_hosting/docker resources/self_hosting/getting_started/docker`) + +## Steps + +1. **Validate**: Check that the source .mdx file exists and the destination directory exists (create it if needed) +2. **Move the file**: Use `git mv` to move the .mdx file from old path to new path +3. **Update docs.json navigation**: Find the old path in the `pages` arrays and replace it with the new path +4. **Add a redirect**: Add a redirect entry in the `redirects` array of docs.json mapping the old path to the new path +5. **Fix redirect destinations**: Check if any existing redirects in docs.json have the old path as their `destination` and update them to point to the new path (prevent redirect chains) +6. **Fix all internal links**: Search ALL .mdx files in the repo (excluding `snippets/`, `reference/api_v0/`, and `changelog/`) for links containing the old path and update them to the new path. Be careful to preserve anchors (e.g. `old-path#section` becomes `new-path#section`) +7. **Report**: List all files modified and the total number of links updated + +Important: +- Paths should NOT include the `.mdx` extension or leading `/` +- Do NOT modify links inside the `redirects` array source fields (those are backward-compat sources) +- Do NOT touch files in `snippets/`, `reference/api_v0/`, or `changelog/` diff --git a/.claude/commands/new-capability.md b/.claude/commands/new-capability.md new file mode 100644 index 0000000000..e88032635e --- /dev/null +++ b/.claude/commands/new-capability.md @@ -0,0 +1,37 @@ +Scaffold a new capability in the Learn tab following the standard structure. + +Arguments: $ARGUMENTS (the capability name, e.g. `geosearch` or `faceted_search`) + +## Steps + +1. **Create the directory**: `learn//` + +2. **Create the pages** with proper frontmatter. Each page should have a `title` and `description` field. Create the following files: + + - `overview.mdx` - What this capability is, why it matters, key features, how it works at a high level. Include a CardGroup at the bottom linking to the other pages in the group. + - `getting_started.mdx` - Step-by-step tutorial to use this capability for the first time. Prerequisites, minimal working example, expected results. + - `how_to.mdx` - Task-oriented guides for common use cases. Each section answers "How do I do X?" + - `advanced.mdx` - Deep-dive content: edge cases, performance tuning, architecture details, advanced configuration. + - `reference.mdx` - Configuration options, API parameters, settings reference specific to this capability. Link to the relevant API reference pages. + +3. **Add to docs.json navigation**: Add a new group in the Learn tab: + ```json + { + "group": "", + "pages": [ + "learn//overview", + "learn//getting_started", + "learn//how_to", + "learn//advanced", + "learn//reference" + ] + } + ``` + +4. **Ask the user** where in the Learn tab nav order this group should be placed (after which existing group). + +## Writing rules +- Never use em dashes in content +- Use Meilisearch Cloud examples first, then self-hosted alternatives +- Include code examples with curl and at least one SDK +- Add `` callouts for Meilisearch Cloud when relevant diff --git a/.claude/commands/new-comparison.md b/.claude/commands/new-comparison.md new file mode 100644 index 0000000000..4b9b1193ab --- /dev/null +++ b/.claude/commands/new-comparison.md @@ -0,0 +1,67 @@ +Create a new comparison page for Meilisearch vs another product. + +Arguments: $ARGUMENTS (the product name, e.g. `Typesense` or `Elasticsearch`) + +## Template + +Create the file at `resources/comparisons/.mdx` following this structure: + +```mdx +--- +title: Meilisearch vs +sidebarTitle: +description: Compare Meilisearch and . Learn key differences and when to choose each. +--- + + + +## Quick comparison + +| | Meilisearch | | +|---|:---:|:---:| +| **License** | MIT (CE) / BUSL-1.1 (EE) | ... | +| **Built with** | Rust | ... | +| **Data storage** | Disk (memory-mapped) | ... | +| **Sharding** | Yes (Enterprise Edition) | ... | +| **Language support** | Optimized for CJK, Arabic, Hebrew, Thai | ... | +| **Embedding generation** | Built-in local (Candle) + any HTTP API provider | ... | +| **Conversational search** | Yes (built-in chat) | ... | + +## When to choose Meilisearch + + + +## What does well + + + +## When to choose + +Consider if: +- + +## Migration resources + +If you're considering Meilisearch: +- [Meilisearch quick start](/getting_started/first_project) +- [AI-powered search](/learn/ai_powered_search/getting_started_with_ai_search) +- [Conversational search](/learn/chat/getting_started_with_chat) +- + + + is a registered trademark of . This comparison is based on publicly available information and our own analysis. + +``` + +## Steps + +1. Create the file from the template above +2. Add the page to docs.json in the "Comparisons" group under the Resources tab +3. Ask the user to fill in product-specific details or research publicly available information +4. Never lie or invent features. If unsure about a competitor feature, ask the user. + +## Tone +- Write from Meilisearch's perspective: confident, not neutral +- Highlight Meilisearch strengths before competitor strengths +- Be honest about competitor advantages but scope them appropriately +- Never use em dashes diff --git a/.claude/commands/update-api-ref.md b/.claude/commands/update-api-ref.md new file mode 100644 index 0000000000..53673345ba --- /dev/null +++ b/.claude/commands/update-api-ref.md @@ -0,0 +1,41 @@ +Update the API reference documentation from the OpenAPI spec. + +## Steps + +1. **Fetch the latest OpenAPI spec** from the Meilisearch repository: + ``` + npm run fetch-meilisearch-openapi-file + ``` + +2. **Generate the Mintlify-compatible OpenAPI file**: + ``` + npm run generate-mintlify-openapi-file + ``` + +3. **Check for new routes** that need coverage: + ``` + npm run check-openapi-routes-coverage + ``` + +4. **Generate code sample snippets**: + ``` + npm run generate-code-sample-snippets-file + ``` + +5. **Check code samples**: + ``` + npm run check-openapi-code-samples + npm run check-code-samples-usage + npm run check-missing-sdk-samples + npm run check-unused-sdk-samples + ``` + +6. **Report**: Summarize what changed: + - New routes added (if any) + - Missing code samples (if any) + - Any errors from the scripts + +If new routes were added, remind the user that they may need to: +- Add MDX stub files for new endpoints +- Update the docs.json navigation if new route groups were created +- Add code samples for the new endpoints diff --git a/.claude/commands/update-changelog.md b/.claude/commands/update-changelog.md new file mode 100644 index 0000000000..0d330adbb9 --- /dev/null +++ b/.claude/commands/update-changelog.md @@ -0,0 +1,19 @@ +Update the changelog from GitHub releases. + +## Steps + +1. **Generate the changelog**: + ``` + npm run generate-changelog + ``` + +2. **Review the output**: Check for any errors or warnings from the script. + +3. **Verify the generated files**: Look at the changelog directory for new or updated entries. Show the user a summary of what releases were added or updated. + +4. **Check docs.json**: If new changelog pages were generated, verify they are included in the Changelog tab navigation in docs.json. Add any missing entries. + +5. **Report**: Summarize what was generated: + - Number of new releases added + - Any releases that failed to generate + - Whether docs.json navigation needs updating diff --git a/.gitignore b/.gitignore index 34c8896d09..f367691120 100644 --- a/.gitignore +++ b/.gitignore @@ -136,3 +136,6 @@ yarn-error.log !.yarn/releases !.yarn/sdks !.yarn/versions + +# Script output +missing-redirects.txt diff --git a/CLAUDE.md b/CLAUDE.md index 910be66ed1..ca53b10e43 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,5 +1,15 @@ # Meilisearch Documentation +## Documentation structure + +The documentation is organized into five tabs: + +- **Getting Started**: Where everyone starts. First steps with Meilisearch, SDK quick starts, framework integrations. +- **Learn** (soon renamed to **Capabilities**): All Meilisearch capabilities documented. Each capability follows the structure: Overview, Getting Started, How To, Advanced, References. +- **References**: API reference documentation for the HTTP API. Generated from the OpenAPI spec. Must be updated whenever there is a new route. See scripts in `package.json`. +- **Resources**: Secondary references. Self-hosting, comparisons and migration guides for alternatives, under the hood internals, demos, and other resources. +- **Changelog**: Changelog of the Engine (and soon Cloud too). Automatically generated from GitHub releases. See scripts in `package.json`. + ## Writing style - **Never use em dashes (`—`)** in documentation content. Use commas, parentheses, or rewrite the sentence instead. diff --git a/assets/images/demos/ecommerce-demo.png b/assets/images/demos/ecommerce-demo.png new file mode 100644 index 0000000000..b86bf49688 Binary files /dev/null and b/assets/images/demos/ecommerce-demo.png differ diff --git a/assets/images/demos/geosearch-demo.png b/assets/images/demos/geosearch-demo.png new file mode 100644 index 0000000000..7daf41bd4d Binary files /dev/null and b/assets/images/demos/geosearch-demo.png differ diff --git a/assets/images/demos/image-search-demo.png b/assets/images/demos/image-search-demo.png new file mode 100644 index 0000000000..2453783c01 Binary files /dev/null and b/assets/images/demos/image-search-demo.png differ diff --git a/assets/images/demos/music-demo.png b/assets/images/demos/music-demo.png new file mode 100644 index 0000000000..83444c94f2 Binary files /dev/null and b/assets/images/demos/music-demo.png differ diff --git a/assets/images/demos/personalized-search-demo.png b/assets/images/demos/personalized-search-demo.png new file mode 100644 index 0000000000..4c60fdb4ae Binary files /dev/null and b/assets/images/demos/personalized-search-demo.png differ diff --git a/assets/images/demos/playground-demo.png b/assets/images/demos/playground-demo.png new file mode 100644 index 0000000000..eb27ea8b5f Binary files /dev/null and b/assets/images/demos/playground-demo.png differ diff --git a/assets/images/postman/collection_overview.png b/assets/images/postman/collection_overview.png new file mode 100644 index 0000000000..e6a74a3cac Binary files /dev/null and b/assets/images/postman/collection_overview.png differ diff --git a/assets/images/postman/import_dialog.png b/assets/images/postman/import_dialog.png new file mode 100644 index 0000000000..4b6e87adc0 Binary files /dev/null and b/assets/images/postman/import_dialog.png differ diff --git a/assets/images/postman/import_menu.png b/assets/images/postman/import_menu.png new file mode 100644 index 0000000000..d3a437f1d3 Binary files /dev/null and b/assets/images/postman/import_menu.png differ diff --git a/assets/images/postman/import_openapi.png b/assets/images/postman/import_openapi.png new file mode 100644 index 0000000000..7ea0cc2078 Binary files /dev/null and b/assets/images/postman/import_openapi.png differ diff --git a/assets/images/postman/import_postman_collection.png b/assets/images/postman/import_postman_collection.png new file mode 100644 index 0000000000..4964fc355a Binary files /dev/null and b/assets/images/postman/import_postman_collection.png differ diff --git a/docs.json b/docs.json index 387b1ad3d9..4f9f0fead9 100644 --- a/docs.json +++ b/docs.json @@ -162,6 +162,7 @@ "group": "Introduction", "pages": [ "getting_started/overview", + "getting_started/first_project", "getting_started/features", "getting_started/glossary", "getting_started/good_practices" @@ -214,16 +215,6 @@ { "tab": "Learn", "groups": [ - { - "group": "Getting started", - "pages": [ - "learn/getting_started/cloud_quick_start", - "learn/getting_started/documents", - "learn/getting_started/indexes", - "learn/getting_started/primary_key", - "learn/getting_started/search_preview" - ] - }, { "group": "AI-powered search", "pages": [ @@ -253,16 +244,6 @@ "learn/personalization/search_personalization" ] }, - { - "group": "Self-hosted", - "pages": [ - "learn/self_hosted/getting_started_with_self_hosted_meilisearch", - "learn/self_hosted/configure_meilisearch_at_launch", - "learn/self_hosted/install_meilisearch_locally", - "learn/self_hosted/supported_os", - "learn/self_hosted/enterprise_edition" - ] - }, { "group": "Analytics", "pages": [ @@ -285,7 +266,6 @@ "learn/async/working_with_tasks", "learn/async/filtering_tasks", "learn/async/paginating_tasks", - "learn/async/task_webhook", "learn/async/asynchronous_operations" ] }, @@ -310,14 +290,10 @@ { "group": "Security and permissions", "pages": [ - "learn/security/basic_security", "learn/security/generate_tenant_token_sdk", "learn/security/generate_tenant_token_third_party", "learn/security/generate_tenant_token_scratch", - "learn/security/resetting_master_key", "learn/security/tenant_token_reference", - "learn/security/differences_master_api_keys", - "learn/security/protected_unprotected", "learn/security/multitenancy_tenant_tokens" ] }, @@ -329,41 +305,16 @@ "learn/multi_search/multi_search_vs_federated_search" ] }, - { - "group": "Update and migration", - "pages": [ - "learn/update_and_migration/migrating_cloud", - "learn/update_and_migration/updating", - "learn/update_and_migration/algolia_migration" - ] - }, - { - "group": "Data backup", - "pages": [ - "learn/data_backup/dumps", - "learn/data_backup/snapshots", - "learn/data_backup/snapshots_vs_dumps" - ] - }, { "group": "Indexing", "pages": [ "learn/indexing/rename_an_index", - "learn/indexing/ram_multithreading_performance", + "learn/indexing/indexing_best_practices", "learn/indexing/tokenization", "learn/indexing/multilingual-datasets", "learn/indexing/optimize_indexing_performance" ] }, - { - "group": "Engine", - "pages": [ - "learn/engine/concat", - "learn/engine/datatypes", - "learn/engine/prefix", - "learn/engine/storage" - ] - }, { "group": "Relevancy", "pages": [ @@ -378,20 +329,6 @@ "learn/relevancy/displayed_searchable_attributes", "learn/relevancy/synonyms" ] - }, - { - "group": "Resources", - "pages": [ - "learn/resources/known_limitations", - "learn/resources/experimental_features_overview", - "learn/resources/faq", - "learn/resources/sdks", - "learn/resources/comparison_to_alternatives", - "learn/resources/telemetry", - "learn/resources/language", - "learn/resources/versioning", - "learn/resources/contributing_docs" - ] } ] }, @@ -817,7 +754,6 @@ { "group": "Front end", "pages": [ - "guides/front_end/front_end_integration", "guides/front_end/pagination" ] }, @@ -834,8 +770,7 @@ "guides/embedders/cohere", "guides/embedders/mistral", "guides/embedders/voyage", - "guides/embedders/gemini", - "guides/computing_hugging_face_embeddings_gpu" + "guides/embedders/gemini" ] }, { @@ -847,7 +782,6 @@ { "group": "Security", "pages": [ - "guides/http2_ssl", "guides/laravel_multitenancy", "guides/multitenancy_nodejs" ] @@ -858,17 +792,147 @@ "guides/relevancy/ordering_ranking_rules", "guides/relevancy/interpreting_ranking_scores" ] + } + ] + }, + { + "tab": "Resources", + "groups": [ + { + "group": "Self-hosting", + "pages": [ + "resources/self_hosting/overview", + { + "group": "Getting started", + "pages": [ + "resources/self_hosting/getting_started/quick_start", + "resources/self_hosting/getting_started/install_locally", + "resources/self_hosting/getting_started/docker", + "resources/self_hosting/getting_started/search_preview" + ] + }, + { + "group": "Configuration", + "pages": [ + "resources/self_hosting/configuration/overview", + "resources/self_hosting/configuration/reference" + ] + }, + { + "group": "Deployment", + "pages": [ + "resources/self_hosting/deployment/overview", + "resources/self_hosting/deployment/running_production", + "resources/self_hosting/deployment/aws", + "resources/self_hosting/deployment/gcp", + "resources/self_hosting/deployment/azure", + "resources/self_hosting/deployment/digitalocean" + ] + }, + { + "group": "Security", + "pages": [ + "resources/self_hosting/security/overview", + "resources/self_hosting/security/master_api_keys", + "resources/self_hosting/security/basic_security", + "resources/self_hosting/security/resetting_master_key", + "resources/self_hosting/security/protected_unprotected", + "resources/self_hosting/security/http2_ssl" + ] + }, + { + "group": "Data backup", + "pages": [ + "resources/self_hosting/data_backup/overview", + "resources/self_hosting/data_backup/dumps", + "resources/self_hosting/data_backup/snapshots" + ] + }, + { + "group": "Advanced", + "pages": [ + "resources/self_hosting/performance/ram_multithreading", + "resources/self_hosting/webhooks", + "resources/self_hosting/huggingface_gpu" + ] + }, + "resources/self_hosting/enterprise_edition" + ] + }, + { + "group": "Comparisons", + "pages": [ + "resources/comparisons/alternatives", + "resources/comparisons/elasticsearch", + "resources/comparisons/algolia", + "resources/comparisons/typesense", + "resources/comparisons/postgresql", + "resources/comparisons/pinecone", + "resources/comparisons/qdrant", + "resources/comparisons/opensearch", + "resources/comparisons/mongodb" + ] + }, + { + "group": "Migration", + "pages": [ + "resources/migration/migrating_cloud", + "resources/migration/updating", + "resources/migration/algolia_migration", + "resources/migration/elasticsearch_migration", + "resources/migration/qdrant_migration", + "resources/migration/mongodb_migration", + "resources/migration/postgresql_migration", + "resources/migration/supabase_migration" + ] }, { - "group": "Deployment", + "group": "Demos", "pages": [ - "guides/running_production" + "resources/demos/overview", + "resources/demos/where_to_watch", + "resources/demos/ecommerce", + "resources/demos/saas", + "resources/demos/flickr", + "resources/demos/personalized_search", + "resources/demos/playground", + "resources/demos/music", + "resources/demos/geosearch", + "resources/demos/moma", + "resources/demos/nobel_prizes", + "resources/demos/tenant_tokens", + "resources/demos/typo_tolerance", + "resources/demos/voice_search", + "resources/demos/rubygems" ] }, { - "group": "Miscellaneous", + "group": "Under the hood", "pages": [ - "guides/docker" + "resources/internals/documents", + "resources/internals/indexes", + "resources/internals/primary_key", + "resources/internals/storage", + "resources/internals/datatypes", + "resources/internals/ranking", + "resources/internals/bucket_sort", + "resources/internals/hannoy", + "resources/internals/concat", + "resources/internals/prefix", + "resources/help/language" + ] + }, + { + "group": "Other resources", + "pages": [ + "resources/help/sdks", + "resources/help/faq", + "resources/help/known_limitations", + "resources/help/experimental_features_overview", + "resources/help/telemetry", + "resources/help/versioning", + "resources/help/contributing_docs", + "resources/migration/previous_docs_version" ] } ] @@ -896,1052 +960,596 @@ }, "redirects": [ { - "source": "/getting_started/integrations/gatsby", - "destination": "https://github.com/meilisearch/gatsby-plugin-meilisearch" + "source": "/resources/self_hosting/getting_started", + "destination": "/resources/self_hosting/getting_started/quick_start" }, { - "source": "/getting_started/integrations/meilisync", - "destination": "https://github.com/long2ice/meilisync" + "source": "/resources/self_hosting/install_meilisearch_locally", + "destination": "/resources/self_hosting/getting_started/install_locally" }, { - "source": "/learn/indexing/indexing_best_practices", - "destination": "/getting_started/good_practices" + "source": "/resources/self_hosting/configuration", + "destination": "/resources/self_hosting/configuration/overview" }, { - "source": "/errors", - "destination": "/reference/errors/error_codes" + "source": "/learn/getting_started/cloud_quick_start", + "destination": "/getting_started/first_project" }, { - "source": "/faq", - "destination": "/learn/resources/faq" + "source": "/learn/getting_started/documents", + "destination": "/resources/internals/documents" }, { - "source": "/reference", - "destination": "/reference/api/authorization" + "source": "/learn/getting_started/indexes", + "destination": "/resources/internals/indexes" }, { - "source": "/reference/features/authentication", - "destination": "/learn/security/master_api_keys" + "source": "/learn/getting_started/primary_key", + "destination": "/resources/internals/primary_key" }, { - "source": "/reference/features/installation#download-and-launch", - "destination": "docs/learn/self_hosted/install_meilisearch_locally" + "source": "/learn/getting_started/search_preview", + "destination": "/resources/self_hosting/getting_started/search_preview" }, { - "source": "/reference/features/installation.html#download-and-launch", - "destination": "docs/learn/self_hosted/install_meilisearch_locally" + "source": "/learn/security/basic_security", + "destination": "/resources/self_hosting/security/basic_security" }, { - "source": "/learn/advanced/asynchronous_operations", - "destination": "/learn/async/asynchronous_operations" + "source": "/learn/security/resetting_master_key", + "destination": "/resources/self_hosting/security/resetting_master_key" }, { - "source": "/learn/advanced/asynchronous_operations#filtering-tasks", - "destination": "/learn/async/managing_tasks#filtering-tasks" + "source": "/learn/security/protected_unprotected", + "destination": "/resources/self_hosting/security/protected_unprotected" }, { - "source": "/learn/advanced/asynchronous_operations#paginating-tasks", - "destination": "/learn/async/managing_tasks#paginating-tasks" + "source": "/learn/security/differences_master_api_keys", + "destination": "/resources/self_hosting/security/master_api_keys" }, { - "source": "/learn/advanced/asynchronous_operations#filter-by-uid", - "destination": "/learn/async/managing_tasks#filter-by-uid" + "source": "/learn/indexing/indexing_best_practices", + "destination": "/getting_started/good_practices" }, { - "source": "/learn/advanced/asynchronous_operations#filter-by-status", - "destination": "/learn/async/managing_tasks#filter-by-status" + "source": "/learn/cookbooks/multitenancy_nodejs", + "destination": "/guides/security/multitenancy_nodejs" }, { - "source": "/learn/advanced/asynchronous_operations#filter-by-type", - "destination": "/learn/async/managing_tasks#filter-by-type" + "source": "/reference/api/batches", + "destination": "/reference/api/async-task-management/list-batches" }, { - "source": "/learn/advanced/asynchronous_operations#filter-by-indexuid", - "destination": "/learn/async/managing_tasks#filter-by-indexuid" + "source": "/reference/api/chats", + "destination": "/reference/api/chats/update-chat" }, { - "source": "/learn/advanced/asynchronous_operations#filter-by-canceledby", - "destination": "/learn/async/managing_tasks#filter-by-canceledby" + "source": "/reference/api/documents", + "destination": "/reference/api/documents/list-documents-with-get" }, { - "source": "/learn/advanced/asynchronous_operations#filter-by-date", - "destination": "/learn/async/managing_tasks#filter-by-date" + "source": "/reference/api/dump", + "destination": "/reference/api/backups/create-dump" }, { - "source": "/learn/advanced/asynchronous_operations#combine-filters", - "destination": "/learn/async/managing_tasks#combine-filters" + "source": "/reference/api/experimental_features", + "destination": "/reference/api/experimental-features/list-experimental-features" }, { - "source": "/learn/advanced/concat", - "destination": "/learn/engine/concat" + "source": "/reference/api/facet_search", + "destination": "/reference/api/facet-search/search-in-facets" }, { - "source": "/learn/advanced/datatypes", - "destination": "/learn/engine/datatypes" + "source": "/reference/api/health", + "destination": "/reference/api/health/get-health" }, { - "source": "/learn/advanced/faceted_search", - "destination": "/learn/fine_tuning_results/faceted_search" + "source": "/reference/api/indexes", + "destination": "/reference/api/settings/list-all-indexes" }, { - "source": "/learn/advanced/filtering", - "destination": "docs/learn/filtering_and_sorting/filter_search_results" + "source": "/reference/api/keys", + "destination": "/reference/api/keys/list-api-keys" }, { - "source": "/learn/advanced/geosearch", - "destination": "/learn/filtering_and_sorting/geosearch" + "source": "/reference/api/multi_search", + "destination": "/reference/api/multi-search/perform-a-multi-search" }, { - "source": "/learn/advanced/indexing", - "destination": "/learn/indexing/indexing_best_practices" + "source": "/reference/api/network", + "destination": "/reference/api/network/get-network" }, { - "source": "/learn/advanced/known_limitations", - "destination": "/learn/resources/known_limitations" + "source": "/reference/api/search", + "destination": "/reference/api/search/search-with-post" }, { - "source": "/learn/advanced/pagination", - "destination": "/learn/front_end/pagination" + "source": "/reference/api/settings", + "destination": "/reference/api/settings/list-all-settings" }, { - "source": "/learn/advanced/prefix", - "destination": "/learn/engine/prefix" + "source": "/reference/api/similar", + "destination": "/reference/api/similar-documents/get-similar-documents-with-post" }, { - "source": "/learn/advanced/sorting", - "destination": "/learn/filtering_and_sorting/sort_search_results" + "source": "/reference/api/snapshots", + "destination": "/reference/api/backups/create-snapshot" }, { - "source": "/learn/advanced/storage", - "destination": "/learn/engine/storage" + "source": "/reference/api/tasks", + "destination": "/reference/api/async-task-management/list-tasks" }, { - "source": "/learn/advanced/tokenization", - "destination": "/learn/indexing/tokenization" + "source": "/reference/api/version", + "destination": "/reference/api/version/get-version" }, { - "source": "/learn/advanced/working_with_dates", - "destination": "/learn/filtering_and_sorting/working_with_dates" + "source": "/reference/api/webhooks", + "destination": "/reference/api/webhooks/list-webhooks" }, { - "source": "/learn/ai-powered-search/deactivate_ai_powered_search", - "destination": "/learn/ai_powered_search/deactivate_ai_powered_search" + "source": "/guides/front_end/search_bar_for_docs", + "destination": "/guides/front_end/front_end_integration" }, { - "source": "/learn/ai-powered-search/difference_full_text_ai_search", - "destination": "/learn/ai_powered_search/difference_full_text_ai_search" + "source": "/reference/api/analyze", + "destination": "/reference/api/authorization" }, { - "source": "/learn/ai-powered-search/getting_started_with_ai_search", - "destination": "/learn/ai_powered_search/getting_started_with_ai_search" + "source": "/reference/api/attributes_for_faceting", + "destination": "/reference/api/settings/get-filterableattributes" }, { - "source": "/learn/ai-powered-search/search_with_user_provided_embeddings", - "destination": "/learn/ai_powered_search/search_with_user_provided_embeddings" + "source": "/reference/api/chat_completions", + "destination": "/reference/api" }, { - "source": "/learn/ai_powered_search/conversational_search_with_chat", - "destination": "/learn/chat/conversational_search" + "source": "/reference/api/compact", + "destination": "/reference/api/indexes/compact-index" }, { - "source": "/learn/analytics/deactivate_analytics_monitoring", - "destination": "/learn/analytics/migrate_analytics_monitoring" + "source": "/reference/api/configuration", + "destination": "/reference/api/authorization" }, { - "source": "/learn/async/managing_tasks", - "destination": "/learn/async/working_with_tasks" + "source": "/reference/api/distinct_attribute", + "destination": "/reference/api/settings/get-distinctattribute" }, { - "source": "/learn/cloud/analytics", - "destination": "/learn/analytics/configure_analytics" + "source": "/reference/api/documents/documents-by-query-post", + "destination": "/reference/api/documents/list-documents-with-post" }, { - "source": "/learn/cloud/teams", - "destination": "/learn/teams/teams" + "source": "/reference/api/dumps", + "destination": "/reference/api/backups/create-dump" }, { - "source": "/learn/configuration/instance_options", - "destination": "/learn/self_hosted/configure_meilisearch_at_launch" + "source": "/reference/api/embedders", + "destination": "/reference/api/settings/get-embedders" }, { - "source": "/learn/configuration/settings", - "destination": "/reference/api/settings" + "source": "/reference/api/environment_variables", + "destination": "/reference/api/authorization" }, { - "source": "/learn/contributing/contributing_docs", - "destination": "/learn/resources/contributing_docs" + "source": "/reference/api/error_codes", + "destination": "/reference/errors/error_codes" }, { - "source": "/learn/contributing/overview", - "destination": "/learn/contributing/contributing_docs#contributing-to-meilisearch" + "source": "/reference/api/errors", + "destination": "/reference/errors/overview" }, { - "source": "/learn/cookbooks/aws", - "destination": "/guides/deployment/aws" + "source": "/reference/api/fields", + "destination": "/reference/api/indexes/list-index-fields" }, { - "source": "/learn/cookbooks/azure", - "destination": "/guides/deployment/azure" + "source": "/reference/api/filterable_attributes", + "destination": "/reference/api/settings/get-filterableattributes" }, { - "source": "/learn/cookbooks/computing_hugging_face_embeddings_gpu", - "destination": "/guides/ai/computing_hugging_face_embeddings_gpu" + "source": "/reference/api/filtering", + "destination": "/reference/api/settings/get-filterableattributes" }, { - "source": "/learn/cookbooks/docker", - "destination": "/guides/misc/docker" + "source": "/reference/api/keys.html", + "destination": "/reference/api/keys/list-api-keys" }, { - "source": "/learn/cookbooks/gcp", - "destination": "/guides/deployment/gcp" + "source": "/reference/api/keys/get-api-keys", + "destination": "/reference/api/keys/list-api-keys" }, { - "source": "/learn/cookbooks/http2_ssl", - "destination": "/guides/security/http2_ssl" + "source": "/reference/api/logs", + "destination": "/reference/api/experimental-features/retrieve-logs" }, { - "source": "/learn/cookbooks/indexing_best_practices", - "destination": "/guides/performance/indexing_best_practices" + "source": "/reference/api/metrics", + "destination": "/reference/api/stats/get-prometheus-metrics" }, { - "source": "/learn/cookbooks/koyeb", - "destination": "/guides/deployment/koyeb" + "source": "/reference/api/network/get-network", + "destination": "/reference/api/experimental-features/get-network-topology" }, { - "source": "/learn/cookbooks/langchain", - "destination": "/guides/ai/langchain" + "source": "/reference/api/overview", + "destination": "/reference/api/authorization" }, { - "source": "/learn/cookbooks/laravel_multitenancy", - "destination": "/guides/security/laravel_multitenancy" + "source": "/reference/api/plugins", + "destination": "/reference/api/authorization" }, { - "source": "/learn/cookbooks/laravel_scout", - "destination": "/getting_started/frameworks/laravel" + "source": "/reference/api/python", + "destination": "/reference/api/authorization" }, { - "source": "/learn/cookbooks/large_documents", - "destination": "/guides/performance/large_documents" + "source": "/reference/api/reference/sdks/javascript", + "destination": "/reference/api/authorization" }, { - "source": "/learn/cookbooks/meilisync_mysql", - "destination": "/guides/database/meilisync_mysql" + "source": "/reference/api/search.html", + "destination": "/reference/api/search/search-with-post" }, { - "source": "/learn/cookbooks/meilisync_postgresql", - "destination": "/guides/database/meilisync_postgresql" + "source": "/reference/api/search/search", + "destination": "/reference/api/search/search-with-post" }, { - "source": "/learn/cookbooks/multitenancy_nodejs", - "destination": "/guides/security/multitenancy_nodejs" + "source": "/reference/api/search_parameters", + "destination": "/reference/api/search/search-with-post" }, { - "source": "/learn/cookbooks/qovery", - "destination": "/guides/deployment/qovery" + "source": "/reference/api/searchable_attributes", + "destination": "/reference/api/settings/get-searchableattributes" }, { - "source": "/learn/cookbooks/railway", - "destination": "/guides/deployment/railway" + "source": "/reference/api/settings/embedders", + "destination": "/reference/api/settings/get-embedders" }, { - "source": "/learn/cookbooks/running_production", - "destination": "/guides/deployment/running_production" + "source": "/reference/api/settings/list-all-indexes", + "destination": "/reference/api/settings/list-indexes" }, { - "source": "/learn/cookbooks/search_bar_for_docs", - "destination": "/guides/front_end/front_end_integration" + "source": "/reference/api/sortable_attributes", + "destination": "/reference/api/settings/get-sortableattributes" }, { - "source": "/learn/cookbooks/strapi_v4", - "destination": "/getting_started/frameworks/strapi" + "source": "/reference/api/swap_indexes", + "destination": "/reference/api/indexes/swap-indexes" }, { - "source": "/learn/cookbooks/vercel", - "destination": "/getting_started/integrations/vercel" + "source": "/reference/api/synonyms", + "destination": "/reference/api/settings/get-synonyms" }, { - "source": "/learn/core_concepts/documents", - "destination": "/learn/getting_started/documents" + "source": "/reference/api/tokenize", + "destination": "/reference/api/authorization" }, { - "source": "/learn/core_concepts/indexes", - "destination": "/learn/getting_started/indexes" + "source": "/reference/api/chats/update-chat", + "destination": "/reference/api/chats/update-settings-of-a-chat-workspace" }, { - "source": "/learn/core_concepts/primary_key", - "destination": "/learn/getting_started/primary_key" + "source": "/learn/self_hosted/getting_started_with_self_hosted_meilisearch", + "destination": "/resources/self_hosting/getting_started/quick_start" }, { - "source": "/learn/core_concepts/relevancy", - "destination": "/learn/relevancy/relevancy" + "source": "/learn/self_hosted/configure_meilisearch_at_launch", + "destination": "/resources/self_hosting/configuration/overview" }, { - "source": "/learn/experimental/log_customization", - "destination": "/reference/api/logs" + "source": "/learn/self_hosted/install_meilisearch_locally", + "destination": "/resources/self_hosting/getting_started/install_locally" }, { - "source": "/learn/experimental/max_number_of_batched_tasks", - "destination": "/learn/self_hosted/configure_meilisearch_at_launch" + "source": "/learn/self_hosted/supported_os", + "destination": "/resources/self_hosting/getting_started/install_locally#supported-operating-systems" }, { - "source": "/learn/experimental/metrics", - "destination": "/reference/api/metrics" + "source": "/learn/self_hosted/enterprise_edition", + "destination": "/resources/self_hosting/enterprise_edition" }, { - "source": "/learn/experimental/overview", - "destination": "/learn/resources/experimental_features_overview" + "source": "/learn/async/task_webhook", + "destination": "/resources/self_hosting/webhooks" }, { - "source": "/learn/experimental/puffin_reports", - "destination": "/learn/experimental/log_customization" + "source": "/guides/http2_ssl", + "destination": "/resources/self_hosting/security/http2_ssl" }, { - "source": "/learn/experimental/ranking_rule_score_details", - "destination": "/reference/api/search#ranking_score_details" + "source": "/guides/computing_hugging_face_embeddings_gpu", + "destination": "/resources/self_hosting/huggingface_gpu" }, { - "source": "/learn/experimental/reduce-indexing-memory-usage", - "destination": "/learn/self_hosted/configure_meilisearch_at_launch" + "source": "/learn/indexing/ram_multithreading_performance", + "destination": "/resources/self_hosting/performance/ram_multithreading" }, { - "source": "/learn/experimental/replication_parameter", - "destination": "/learn/self_hosted/configure_meilisearch_at_launch" + "source": "/learn/data_backup/dumps", + "destination": "/resources/self_hosting/data_backup/dumps" }, { - "source": "/learn/experimental/search_queue_size", - "destination": "/learn/self_hosted/configure_meilisearch_at_launch" + "source": "/learn/data_backup/snapshots", + "destination": "/resources/self_hosting/data_backup/snapshots" }, { - "source": "/learn/experimental/vector_search", - "destination": "/learn/ai_powered_search/getting_started_with_ai_search" + "source": "/learn/data_backup/snapshots_vs_dumps", + "destination": "/resources/self_hosting/data_backup/overview" }, { - "source": "/learn/fine_tuning_results/faceted_search", - "destination": "/learn/filtering_and_sorting/search_with_facet_filters" + "source": "/learn/update_and_migration/migrating_cloud", + "destination": "/resources/migration/migrating_cloud" }, { - "source": "/learn/fine_tuning_results/filtering", - "destination": "/learn/filtering_and_sorting/filter_search_results" + "source": "/learn/update_and_migration/updating", + "destination": "/resources/migration/updating" }, { - "source": "/learn/fine_tuning_results/geosearch", - "destination": "/learn/filtering_and_sorting/geosearch" + "source": "/learn/update_and_migration/algolia_migration", + "destination": "/resources/migration/algolia_migration" }, { - "source": "/learn/fine_tuning_results/sorting", - "destination": "/learn/filtering_and_sorting/sort_search_results" + "source": "/learn/resources/known_limitations", + "destination": "/resources/help/known_limitations" }, { - "source": "/learn/fine_tuning_results/working_with_dates", - "destination": "/learn/filtering_and_sorting/working_with_dates" + "source": "/learn/resources/experimental_features_overview", + "destination": "/resources/help/experimental_features_overview" }, { - "source": "/learn/front_end/front_end_integration", - "destination": "/guides/front_end/front_end_integration" + "source": "/learn/resources/faq", + "destination": "/resources/help/faq" }, { - "source": "/learn/front_end/pagination", - "destination": "/guides/front_end/pagination" + "source": "/learn/resources/sdks", + "destination": "/resources/help/sdks" }, { - "source": "/learn/front_end/react_instantsearch", - "destination": "/getting_started/instant_meilisearch/react" + "source": "/learn/resources/comparison_to_alternatives", + "destination": "/resources/comparisons/alternatives" }, { - "source": "/learn/getting_started/a", - "destination": "/learn/getting_started/cloud_quick_start" + "source": "/learn/resources/telemetry", + "destination": "/resources/help/telemetry" }, { - "source": "/learn/getting_started/customizing_relevancy", - "destination": "/learn/configuration/settings" + "source": "/learn/resources/language", + "destination": "/resources/help/language" }, { - "source": "/learn/getting_started/filtering_and_sorting", - "destination": "/learn/fine_tuning_results/filtering" + "source": "/learn/resources/versioning", + "destination": "/resources/help/versioning" }, { - "source": "/learn/getting_started/getting_ready_for_production", - "destination": "/learn/getting_started/cloud_quick_start" + "source": "/learn/resources/contributing_docs", + "destination": "/resources/help/contributing_docs" }, { - "source": "/learn/getting_started/installation", - "destination": "/learn/self_hosted/install_meilisearch_locally" + "source": "/learn/engine/concat", + "destination": "/resources/internals/concat" }, { - "source": "/learn/getting_started/quick_start#front-end-integration", - "destination": "/learn/front_end/front_end_integration" + "source": "/learn/engine/datatypes", + "destination": "/resources/internals/datatypes" }, { - "source": "/learn/getting_started/quick_start", - "destination": "/learn/self_hosted/getting_started_with_self_hosted_meilisearch" + "source": "/learn/engine/prefix", + "destination": "/resources/internals/prefix" }, { - "source": "/learn/getting_started/supported_os", - "destination": "/learn/self_hosted/supported_os" + "source": "/learn/engine/storage", + "destination": "/resources/internals/storage" }, { - "source": "/learn/index_settings/displayed_searchable_attributes", - "destination": "/learn/relevancy/displayed_searchable_attributes" + "source": "/guides/running_production", + "destination": "/resources/self_hosting/deployment/running_production" }, { - "source": "/learn/index_settings/distinct", - "destination": "/learn/relevancy/distinct_attribute" + "source": "/guides/docker", + "destination": "/resources/self_hosting/getting_started/docker" }, { - "source": "/learn/index_settings/synonyms", - "destination": "/learn/relevancy/synonyms" + "source": "/guides/front_end/front_end_integration", + "destination": "/getting_started/instant_meilisearch/javascript" }, { - "source": "/learn/index_settings/typo_tolerance", - "destination": "/learn/relevancy/typo_tolerance_settings" + "source": "/guides/laravel_scout", + "destination": "/getting_started/frameworks/laravel" }, { - "source": "/learn/security/managing_api_keys", - "destination": "/reference/api/keys" + "source": "/guides/front_end/react_quick_start", + "destination": "/getting_started/instant_meilisearch/react" }, { - "source": "/learn/security/master_api_keys", - "destination": "/learn/security/basic_security" + "source": "/guides/front_end/vue_quick_start", + "destination": "/getting_started/instant_meilisearch/vue" }, { - "source": "/learn/security/tenant_tokens", - "destination": "/learn/security/generate_tenant_token_sdk" + "source": "/guides/strapi_v4", + "destination": "/getting_started/frameworks/strapi" }, { - "source": "/learn/update_and_migration/versioning", - "destination": "/learn/resources/versioning" + "source": "/guides/postman_collection", + "destination": "/getting_started/integrations/postman" }, { - "source": "/learn/what_is_meilisearch/comparison_to_alternatives", - "destination": "/learn/resources/comparison_to_alternatives" + "source": "/learn/indexing/rename_an_index", + "destination": "/resources/internals/indexes" }, { - "source": "/learn/what_is_meilisearch/contact", - "destination": "https://www.meilisearch.com/#homepage-community" + "source": "/guides/ruby_on_rails_quick_start", + "destination": "/getting_started/frameworks/rails" }, { - "source": "/learn/what_is_meilisearch/contact.html", - "destination": "https://www.meilisearch.com/#homepage-community" + "source": "/guides/deployment/running_production", + "destination": "/resources/self_hosting/deployment/running_production" }, { - "source": "/learn/what_is_meilisearch/features", - "destination": "/getting_started/features" + "source": "/guides/vercel", + "destination": "/getting_started/integrations/vercel" }, { - "source": "/learn/what_is_meilisearch/language", - "destination": "/learn/resources/language" + "source": "/learn/update_and_migration/previous_docs_version", + "destination": "/resources/migration/previous_docs_version" }, { - "source": "/learn/what_is_meilisearch/overview#sdks-and-integrations", - "destination": "/learn/resources/sdks" + "source": "/guides/security/laravel_multitenancy", + "destination": "/guides/laravel_multitenancy" }, { - "source": "/learn/what_is_meilisearch/overview#alternatives", - "destination": "/learn/resources/comparison_to_alternatives" + "source": "/guides/misc/docker", + "destination": "/resources/self_hosting/getting_started/docker" }, { - "source": "/learn/what_is_meilisearch/overview", - "destination": "/getting_started/overview" + "source": "/guides/deployment/aws", + "destination": "/resources/self_hosting/deployment/aws" }, { - "source": "/learn/what_is_meilisearch/philosophy", - "destination": "/getting_started/overview" + "source": "/learn/security/master_keys", + "destination": "/resources/self_hosting/security/master_api_keys" }, { - "source": "/learn/what_is_meilisearch/sdks", - "destination": "/learn/resources/sdks" + "source": "/learn/advanced/dumps", + "destination": "/resources/self_hosting/data_backup/dumps" }, { - "source": "/learn/what_is_meilisearch/sdks.html", - "destination": "/learn/resources/sdks" + "source": "/guides/advanced_guides/installation", + "destination": "/resources/self_hosting/getting_started/install_locally" }, { - "source": "/learn/what_is_meilisearch/search_preview", - "destination": "/learn/getting_started/search_preview" + "source": "/learn/advanced/filtering_and_faceted_search", + "destination": "/learn/filtering_and_sorting/filter_search_results" }, { - "source": "/learn/what_is_meilisearch/telemetry", - "destination": "/learn/resources/telemetry" + "source": "/reference/features/search_parameters", + "destination": "/reference/api/search/search-with-post" }, { - "source": "/reference/api/batches", - "destination": "/reference/api/async-task-management/list-batches" + "source": "/learn/analytics/configure_analytics", + "destination": "/learn/analytics/configure_analytics_events" }, { - "source": "/reference/api/chats", - "destination": "/reference/api/chats/update-chat" + "source": "/reference/features/configuration", + "destination": "/resources/self_hosting/configuration/overview" }, { - "source": "/reference/api/chats#prompts", - "destination": "/reference/api/chats/update-chat" + "source": "/learn/configuration/typo_tolerance", + "destination": "/learn/relevancy/typo_tolerance_settings" }, { - "source": "/reference/api/documents#get-documents", - "destination": "/reference/api/documents/list-documents-with-get" + "source": "/learn/configuration/synonyms", + "destination": "/learn/relevancy/synonyms" }, { - "source": "/reference/api/documents#add-or-replace-documents", - "destination": "/reference/api/documents/add-or-replace-documents" + "source": "/learn/security/api_keys", + "destination": "/learn/security/generate_tenant_token_sdk" }, { - "source": "/reference/api/documents#add-or-update-documents", - "destination": "/reference/api/documents/add-or-update-documents" + "source": "/learn/advanced/hybrid_search", + "destination": "/learn/ai_powered_search/getting_started_with_ai_search" }, { - "source": "/reference/api/documents#get-documents-with-post", - "destination": "/reference/api/documents/list-documents-with-post" + "source": "/learn/tutorials/getting_started", + "destination": "/getting_started/first_project" }, { - "source": "/reference/api/documents#delete-all-documents", - "destination": "/reference/api/documents/delete-all-documents" + "source": "/learn/what_is_meilisearch", + "destination": "/getting_started/overview" }, { - "source": "/reference/api/documents#delete-documents-by-filter", - "destination": "/reference/api/documents/delete-documents-by-filter" + "source": "/learn/self_hosted/docker", + "destination": "/resources/self_hosting/getting_started/docker" }, { - "source": "/reference/api/documents#delete-documents-by-batch", - "destination": "/reference/api/documents/delete-documents-by-batch" + "source": "/reference/features/authentication.html", + "destination": "/resources/self_hosting/security/basic_security" }, { - "source": "/reference/api/documents#edit-documents-by-function", - "destination": "/reference/api/documents/edit-documents-by-function" + "source": "/learn/cookbooks/digitalocean", + "destination": "/resources/self_hosting/deployment/digitalocean" }, { - "source": "/reference/api/documents#get-document", - "destination": "/reference/api/documents/get-document" + "source": "/learn/configuration/displayed_searchable_attributes", + "destination": "/learn/relevancy/displayed_searchable_attributes" }, { - "source": "/reference/api/documents#delete-document", - "destination": "/reference/api/documents/delete-document" + "source": "/learn/ai_powered_search/vector_search", + "destination": "/learn/ai_powered_search/getting_started_with_ai_search" }, { - "source": "/reference/api/documents", - "destination": "/reference/api/documents/list-documents-with-get" + "source": "/learn/ai_powered_search/hybrid_search", + "destination": "/learn/ai_powered_search/getting_started_with_ai_search" }, { - "source": "/reference/api/documents#update-documents-with-function", - "destination": "/reference/api/documents/edit-documents-by-function" + "source": "/learn/fine_tuning_results/typo_tolerance", + "destination": "/learn/relevancy/typo_tolerance_settings" }, { - "source": "/reference/api/documents/clear-all-documents", - "destination": "/reference/api/documents/delete-all-documents" + "source": "/guides/deployment/azure", + "destination": "/resources/self_hosting/deployment/azure" }, { - "source": "/reference/api/dump", - "destination": "/reference/api/backups/create-dump" + "source": "/learn/cloud/meilisearch_cloud", + "destination": "/getting_started/overview" }, { - "source": "/reference/api/experimental_features", - "destination": "/reference/api/experimental-features/list-experimental-features" + "source": "/learn/advanced/performance", + "destination": "/resources/self_hosting/performance/ram_multithreading" }, { - "source": "/reference/api/facet_search", - "destination": "/reference/api/facet-search/search-in-facets" + "source": "/learn/experimental/hybrid_search", + "destination": "/learn/ai_powered_search/getting_started_with_ai_search" }, { - "source": "/reference/api/facet_search#body", - "destination": "/reference/api/facet-search/search-in-facets" + "source": "/learn/relevancy/typo_tolerance", + "destination": "/learn/relevancy/typo_tolerance_settings" }, { - "source": "/reference/api/headers#content-type", - "destination": "/reference/api/headers" + "source": "/learn/tutorials/getting_started/search_bar_for_docs", + "destination": "/guides/front_end/pagination" }, { - "source": "/reference/api/headers#search-metadata", - "destination": "/reference/api/headers" + "source": "/learn/advanced/sharding", + "destination": "/learn/multi_search/implement_sharding" }, { - "source": "/reference/api/health", - "destination": "/reference/api/health/get-health" + "source": "/reference/api/stats", + "destination": "/reference/api/stats/get-stats-of-all-indexes" }, { - "source": "/reference/api/indexes", - "destination": "/reference/api/settings/list-all-indexes" + "source": "/reference/api/indexes/list-indexes", + "destination": "/reference/api/indexes/list-all-indexes" }, { - "source": "/reference/api/keys", - "destination": "/reference/api/keys/list-api-keys" + "source": "/reference/api/search/perform-a-multi-search", + "destination": "/reference/api/multi-search/perform-a-multi-search" }, { - "source": "/reference/api/keys#get-one-key", - "destination": "/reference/api/keys/get-api-key" + "source": "/reference/api/export", + "destination": "/reference/api/export/export-to-a-remote-meilisearch" }, { - "source": "/reference/api/keys#actions", - "destination": "/reference/api/keys/create-api-key#body-actions" + "source": "/reference/api/stats/get-stats-of-index", + "destination": "/reference/api/stats/get-stats-of-all-indexes" }, { - "source": "/reference/api/keys#create-a-key", - "destination": "/reference/api/keys/create-api-key" + "source": "/reference/api/settings/list-indexes", + "destination": "/reference/api/settings/list-all-settings" }, { - "source": "/reference/api/keys#delete-a-key", - "destination": "/reference/api/keys/delete-api-key" + "source": "/reference/api/experimental-features/retrieve-logs", + "destination": "/reference/api/logs/retrieve-logs" }, { - "source": "/reference/api/multi_search", - "destination": "/reference/api/multi-search/perform-a-multi-search" + "source": "/reference/api/settings/get-localized-attributes", + "destination": "/reference/api/settings/get-localizedattributes" }, { - "source": "/reference/api/network", - "destination": "/reference/api/network/get-network" - }, - { - "source": "/reference/api/search#search-in-an-index-with-post-route", - "destination": "/reference/api/search/search-with-post" - }, - { - "source": "/reference/api/search#search-in-an-index-with-get-route", - "destination": "/reference/api/search/search-with-get" - }, - { - "source": "/reference/api/search", - "destination": "/reference/api/search/search-with-post" - }, - { - "source": "/reference/api/settings", - "destination": "/reference/api/settings/list-all-settings" - }, - { - "source": "/reference/api/settings#update-searchable-attributes", - "destination": "/reference/api/settings/update-searchableattributes" - }, - { - "source": "/reference/api/settings#filterable-attributes", - "destination": "/reference/api/settings/get-filterableattributes" - }, - { - "source": "/reference/api/settings#stop-words", - "destination": "/reference/api/settings/get-stopwords" - }, - { - "source": "/reference/api/settings#update-typo-tolerance-settings", - "destination": "/reference/api/settings/update-typotolerance" - }, - { - "source": "/reference/api/settings#reset-searchable-attributes", - "destination": "/reference/api/settings/delete-searchableattributes" - }, - { - "source": "/reference/api/settings#composite-embedders", - "destination": "/reference/api/settings/get-embedders" - }, - { - "source": "/reference/api/settings#searchable-attributes", - "destination": "/reference/api/settings/get-searchableattributes" - }, - { - "source": "/reference/api/settings#displayed-attributes", - "destination": "/reference/api/settings/get-displayedattributes" - }, - { - "source": "/reference/api/settings#sortable-attributes", - "destination": "/reference/api/settings/get-sortableattributes" - }, - { - "source": "/reference/api/settings#update-displayed-attributes", - "destination": "/reference/api/settings/update-displayedattributes" - }, - { - "source": "/reference/api/settings#update-filterable-attributes", - "destination": "/reference/api/settings/update-filterableattributes" - }, - { - "source": "/reference/api/settings#update-sortable-attributes", - "destination": "/reference/api/settings/update-sortableattributes" - }, - { - "source": "/reference/api/settings#update-ranking-rules", - "destination": "/reference/api/settings/update-rankingrules" - }, - { - "source": "/reference/api/settings#synonyms", - "destination": "/reference/api/settings/get-synonyms" - }, - { - "source": "/reference/api/settings#update-synonyms", - "destination": "/reference/api/settings/update-synonyms" - }, - { - "source": "/reference/api/settings#dictionary", - "destination": "/reference/api/settings/get-dictionary" - }, - { - "source": "/reference/api/settings#faceting", - "destination": "/reference/api/settings/get-faceting" - }, - { - "source": "/reference/api/settings#update-faceting-settings", - "destination": "/reference/api/settings/update-facetsearch" - }, - { - "source": "/reference/api/settings#pagination", - "destination": "/reference/api/settings/update-pagination" - }, - { - "source": "/reference/api/settings#pagination-object", - "destination": "/reference/api/settings/update-pagination" - }, - { - "source": "/reference/api/settings#typo-tolerance", - "destination": "/reference/api/settings/get-typotolerance" - }, - { - "source": "/reference/api/settings#typo-tolerance-object", - "destination": "/reference/api/settings/get-typotolerance" - }, - { - "source": "/reference/api/settings#update-settings", - "destination": "/reference/api/settings/update-all-settings" - }, - { - "source": "/reference/api/settings#update-typo-tolerance", - "destination": "/reference/api/settings/update-typotolerance" - }, - { - "source": "/reference/api/settings#distinct-attribute", - "destination": "/reference/api/settings/get-distinctattribute" - }, - { - "source": "/reference/api/settings#update-distinct-attribute", - "destination": "/reference/api/settings/update-distinctattribute" - }, - { - "source": "/reference/api/settings#facet-search", - "destination": "/reference/api/settings/get-facetsearch" - }, - { - "source": "/reference/api/settings#prefix-search", - "destination": "/reference/api/settings/get-prefix-search" - }, - { - "source": "/reference/api/settings#localized-attributes", - "destination": "/reference/api/settings/get-localized-attributes" - }, - { - "source": "/reference/api/settings#separator-tokens", - "destination": "/reference/api/settings/get-separatortokens" - }, - { - "source": "/reference/api/settings#body", - "destination": "/reference/api/settings/update-all-settings" - }, - { - "source": "/reference/api/settings/update-all", - "destination": "/reference/api/settings/update-all-settings" - }, - { - "source": "/reference/api/similar", - "destination": "/reference/api/similar-documents/get-similar-documents-with-post" - }, - { - "source": "/reference/api/snapshots", - "destination": "/reference/api/backups/create-snapshot" - }, - { - "source": "/reference/api/snapshots/create-snapshot", - "destination": "/reference/api/backups/create-snapshot" - }, - { - "source": "/reference/api/tasks#delete-task", - "destination": "/reference/api/async-task-management/delete-tasks" - }, - { - "source": "/reference/api/tasks", - "destination": "/reference/api/async-task-management/list-tasks" - }, - { - "source": "/reference/api/tasks#get-one-task", - "destination": "/reference/api/async-task-management/get-task" - }, - { - "source": "/reference/api/tasks#delete-tasks", - "destination": "/reference/api/async-task-management/delete-tasks" - }, - { - "source": "/reference/api/tasks#response", - "destination": "/reference/api/async-task-management/list-tasks" - }, - { - "source": "/reference/api/tasks#cancel-tasks", - "destination": "/reference/api/async-task-management/cancel-tasks" - }, - { - "source": "/reference/api/tasks#query-parameters", - "destination": "/reference/api/async-task-management/list-tasks" - }, - { - "source": "/reference/api/tasks#status", - "destination": "/reference/api/async-task-management/get-task" - }, - { - "source": "/reference/api/tasks#type", - "destination": "/reference/api/async-task-management/get-task" - }, - { - "source": "/reference/api/tasks#canceledby", - "destination": "/reference/api/async-task-management/list-tasks" - }, - { - "source": "/reference/api/tasks#uid", - "destination": "/reference/api/async-task-management/get-task" - }, - { - "source": "/reference/api/tasks.html#delete-task", - "destination": "/reference/api/async-task-management/delete-tasks" - }, - { - "source": "/reference/api/version", - "destination": "/reference/api/version/get-version" - }, - { - "source": "/reference/api/webhook", - "destination": "/reference/api/webhooks/get-webhook" - }, - { - "source": "/reference/api/webhooks", - "destination": "/reference/api/webhooks/list-webhooks" - }, - { - "source": "/guides/ai/cloudflare", - "destination": "/guides/embedders/cloudflare" - }, - { - "source": "/guides/ai/cohere", - "destination": "/guides/embedders/cohere" - }, - { - "source": "/guides/ai/getting_started_with_chat", - "destination": "/learn/chat/getting_started_with_chat" - }, - { - "source": "/guides/ai/huggingface", - "destination": "/guides/embedders/huggingface" - }, - { - "source": "/guides/ai/langchain", - "destination": "/guides/langchain" - }, - { - "source": "/guides/ai/mistral", - "destination": "/guides/embedders/mistral" - }, - { - "source": "/guides/ai/openai", - "destination": "/guides/embedders/openai" - }, - { - "source": "/guides/ai/voyage", - "destination": "/guides/embedders/voyage" - }, - { - "source": "/guides/back_end/laravel_scout", - "destination": "/getting_started/frameworks/laravel" - }, - { - "source": "/guides/database/meilisync_mysql", - "destination": "https://github.com/long2ice/meilisync" - }, - { - "source": "/guides/database/meilisync_postgresql", - "destination": "https://github.com/long2ice/meilisync" - }, - { - "source": "/guides/deployment/gcp", - "destination": "/guides/running_production" - }, - { - "source": "/guides/front_end/react_instantsearch", - "destination": "/getting_started/instant_meilisearch/react" - }, - { - "source": "/guides/front_end/search_bar_for_docs", - "destination": "/guides/front_end/front_end_integration" - }, - { - "source": "/guides/integrations/vercel", - "destination": "/getting_started/integrations/vercel" - }, - { - "source": "/guides/performance/indexing_best_practices", - "destination": "/learn/indexing/indexing_best_practices" - }, - { - "source": "/reference/api/analyze", - "destination": "/reference/api/authorization" - }, - { - "source": "/reference/api/attributes_for_faceting", - "destination": "/reference/api/settings/get-filterableattributes" - }, - { - "source": "/reference/api/chat_completions", - "destination": "/reference/api" - }, - { - "source": "/reference/api/compact", - "destination": "/reference/api/indexes/compact-index" - }, - { - "source": "/reference/api/configuration", - "destination": "/reference/api/authorization" - }, - { - "source": "/reference/api/distinct_attribute", - "destination": "/reference/api/settings/get-distinctattribute" - }, - { - "source": "/reference/api/documents/documents-by-query-post", - "destination": "/reference/api/documents/list-documents-with-post" - }, - { - "source": "/reference/api/dumps", - "destination": "/reference/api/backups/create-dump" - }, - { - "source": "/reference/api/embedders", - "destination": "/reference/api/settings/get-embedders" - }, - { - "source": "/reference/api/environment_variables", - "destination": "/reference/api/authorization" - }, - { - "source": "/reference/api/error_codes", - "destination": "/reference/errors/error_codes" - }, - { - "source": "/reference/api/errors", - "destination": "/reference/errors/overview" - }, - { - "source": "/reference/api/experimental", - "destination": "/reference/api/experimental-features/list-experimental-features" - }, - { - "source": "/reference/api/fields", - "destination": "/reference/api/indexes/list-index-fields" - }, - { - "source": "/reference/api/filterable_attributes", - "destination": "/reference/api/settings/get-filterableattributes" - }, - { - "source": "/reference/api/filtering", - "destination": "/reference/api/settings/get-filterableattributes" - }, - { - "source": "/reference/api/keys.html", - "destination": "/reference/api/keys/list-api-keys" - }, - { - "source": "/reference/api/keys/get-api-keys", - "destination": "/reference/api/keys/list-api-keys" - }, - { - "source": "/reference/api/logs", - "destination": "/reference/api/experimental-features/retrieve-logs" - }, - { - "source": "/reference/api/metrics", - "destination": "/reference/api/stats/get-prometheus-metrics" - }, - { - "source": "/reference/api/network/get-network", - "destination": "/reference/api/experimental-features/get-network-topology" - }, - { - "source": "/reference/api/overview", - "destination": "/reference/api/authorization" - }, - { - "source": "/reference/api/plugins", - "destination": "/reference/api/authorization" - }, - { - "source": "/reference/api/python", - "destination": "/reference/api/authorization" - }, - { - "source": "/reference/api/reference/sdks/javascript", - "destination": "/reference/api/authorization" - }, - { - "source": "/reference/api/search.html", - "destination": "/reference/api/search/search-with-post" - }, - { - "source": "/reference/api/search/search", - "destination": "/reference/api/search/search-with-post" - }, - { - "source": "/reference/api/search_parameters", - "destination": "/reference/api/search/search-with-post" - }, - { - "source": "/reference/api/searchable_attributes", - "destination": "/reference/api/settings/get-searchableattributes" - }, - { - "source": "/reference/api/settings/embedders", - "destination": "/reference/api/settings/get-embedders" - }, - { - "source": "/reference/api/settings/list-all-indexes", - "destination": "/reference/api/settings/list-indexes" - }, - { - "source": "/reference/api/sortable_attributes", - "destination": "/reference/api/settings/get-sortableattributes" - }, - { - "source": "/reference/api/swap_indexes", - "destination": "/reference/api/indexes/swap-indexes" - }, - { - "source": "/reference/api/synonyms", - "destination": "/reference/api/settings/get-synonyms" - }, - { - "source": "/reference/api/tokenize", - "destination": "/reference/api/authorization" - }, - { - "source": "/reference/api/chats/update-chat", - "destination": "/reference/api/chats/update-settings-of-a-chat-workspace" - }, - { - "source": "/guides/laravel_scout", - "destination": "/getting_started/frameworks/laravel" - }, - { - "source": "/guides/strapi_v4", - "destination": "/getting_started/frameworks/strapi" - }, - { - "source": "/guides/ruby_on_rails_quick_start", - "destination": "/getting_started/frameworks/rails" - }, - { - "source": "/guides/front_end/react_quick_start", - "destination": "/getting_started/instant_meilisearch/react" - }, - { - "source": "/guides/front_end/vue_quick_start", - "destination": "/getting_started/instant_meilisearch/vue" - }, - { - "source": "/guides/vercel", - "destination": "/getting_started/integrations/vercel" - }, - { - "source": "/learn/getting_started/what_is_meilisearch", - "destination": "/getting_started/overview" - }, - { - "source": "/home", - "destination": "/getting_started/overview" + "source": "/reference/api/chat-completions", + "destination": "/reference/api/chats/request-a-chat-completion" } ] } diff --git a/getting_started/features.mdx b/getting_started/features.mdx index a75b3eeaaa..c26189c22c 100644 --- a/getting_started/features.mdx +++ b/getting_started/features.mdx @@ -106,8 +106,8 @@ Scale Meilisearch horizontally across multiple instances or optimize resource us | Feature | Description | |---------|-------------| -| [Schemaless](/learn/getting_started/documents) | Index documents without a predefined schema | -| [Documents](/learn/getting_started/documents) | Add, replace, update, and delete documents | +| [Schemaless](/resources/internals/documents) | Index documents without a predefined schema | +| [Documents](/resources/internals/documents) | Add, replace, update, and delete documents | | [Delete by filter](/reference/api/documents/delete-documents-by-filter) | Delete documents matching a filter expression | | [Update by function](/reference/api/documents/edit-documents-by-function) | Partial updates to documents using functions | | [Searchable attributes](/learn/relevancy/displayed_searchable_attributes) | Configure which fields are searchable and their priority | @@ -133,7 +133,7 @@ Protect your data with API keys and multi-tenant access control. | Feature | Description | |---------|-------------| -| [API keys](/learn/security/basic_security) | Admin, search, and chat key types for different access levels | +| [API keys](/resources/self_hosting/security/basic_security) | Admin, search, and chat key types for different access levels | | [Tenant tokens](/learn/security/multitenancy_tenant_tokens) | Secure multi-tenant applications with document-level access control | | [Search rules](/learn/security/tenant_token_reference) | Restrict which documents users can access | @@ -183,7 +183,7 @@ These features are available exclusively on Meilisearch Cloud. | Feature | Description | |---------|-------------| | Crawler | Crawl web pages with JS rendering, DocSearch mode, and schema extraction | -| [Search preview](/learn/getting_started/search_preview) | Visual search interface with filtering, sorting, and document CRUD | +| [Search preview](/resources/self_hosting/getting_started/search_preview) | Visual search interface with filtering, sorting, and document CRUD | | [Teams](/learn/teams/teams) | Organize projects and members into team workspaces | | [Enterprise SSO/SCIM](/learn/self_hosted/enterprise_edition) | SAML 2.0 SSO and automated user provisioning | | Autoscale disk | Automatically scale storage as data grows | @@ -198,7 +198,7 @@ These features are available exclusively on Meilisearch Cloud. | [Configuration](/learn/self_hosted/configure_meilisearch_at_launch) | CLI flags and environment variables | | [Snapshots](/learn/data_backup/snapshots) | Full binary copies for fast restoration | | [Dumps](/learn/data_backup/dumps) | Portable JSON exports for migration | -| [Master key](/learn/security/basic_security) | Secure your instance with a master key | +| [Master key](/resources/self_hosting/security/basic_security) | Secure your instance with a master key | ## Integration options diff --git a/learn/getting_started/cloud_quick_start.mdx b/getting_started/first_project.mdx similarity index 97% rename from learn/getting_started/cloud_quick_start.mdx rename to getting_started/first_project.mdx index 75c934cb2e..df60e6c777 100644 --- a/learn/getting_started/cloud_quick_start.mdx +++ b/getting_started/first_project.mdx @@ -1,6 +1,6 @@ --- -title: Getting started with Meilisearch Cloud -sidebarTitle: Getting started with Meilisearch Cloud +title: First Project +sidebarTitle: First Project description: Learn how to create your first Meilisearch Cloud project. --- @@ -104,4 +104,4 @@ If you can see the results coming in as you type, congratulations: you now know This tutorial taught you how to use Meilisearch Cloud's interface to create a project, add an index to it, and use the search preview interface. -In most real-life settings, you will be creating your own search interface and retrieving results through Meilisearch's API. To learn how to add documents and search using the command-line or an SDK in your preferred language, check out the [Meilisearch quick start](/learn/self_hosted/getting_started_with_self_hosted_meilisearch). +In most real-life settings, you will be creating your own search interface and retrieving results through Meilisearch's API. To learn how to add documents and search using the command-line or an SDK in your preferred language, check out the [Meilisearch quick start](/resources/self_hosting/getting_started/quick_start). diff --git a/getting_started/frameworks/rails.mdx b/getting_started/frameworks/rails.mdx index fbf78f7918..865d9d4ca2 100644 --- a/getting_started/frameworks/rails.mdx +++ b/getting_started/frameworks/rails.mdx @@ -10,7 +10,7 @@ Integrate Meilisearch into your Ruby on Rails app. [Create a project](https://cloud.meilisearch.com) in the Meilisearch Cloud dashboard. Check out our [getting started guide](/getting_started/overview) for step-by-step instructions. -If you prefer to use the self-hosted version of Meilisearch, you can follow the [quick start](/learn/self_hosted/getting_started_with_self_hosted_meilisearch) tutorial. +If you prefer to use the self-hosted version of Meilisearch, you can follow the [quick start](/resources/self_hosting/getting_started/quick_start) tutorial. ## 2. Create a Rails app @@ -36,7 +36,7 @@ Run the following command to create a `config/initializers/meilisearch.rb` file. bin/rails meilisearch:install ``` -Then add your Meilisearch URL and [Default Admin API Key](/learn/security/basic_security#obtaining-api-keys). On Meilisearch Cloud, you can find your credentials in your project settings. +Then add your Meilisearch URL and [Default Admin API Key](/resources/self_hosting/security/basic_security#obtaining-api-keys). On Meilisearch Cloud, you can find your credentials in your project settings. ```Ruby MeiliSearch::Rails.configuration = { diff --git a/getting_started/frameworks/strapi.mdx b/getting_started/frameworks/strapi.mdx index fda4da199f..6d226f7c77 100644 --- a/getting_started/frameworks/strapi.mdx +++ b/getting_started/frameworks/strapi.mdx @@ -10,7 +10,7 @@ This tutorial will show you how to integrate Meilisearch with [Strapi](https://s - [Node.js](https://nodejs.org/): active LTS or maintenance LTS versions, currently Node.js >=18.0.0 \<=20.x.x - npm >=6.0.0 (installed with Node.js) -- A running instance of Meilisearch (v >= 1.x). If you need help with this part, you can consult the [Installation section](/learn/self_hosted/getting_started_with_self_hosted_meilisearch). +- A running instance of Meilisearch (v >= 1.x). If you need help with this part, you can consult the [Installation section](/resources/self_hosting/getting_started/install_locally). ## Create a back end using Strapi @@ -117,7 +117,7 @@ By clicking on the checkbox next to `restaurant`, the content-type is automatica The word “Hooked” appears when you click on the `restaurant`'s checkbox in the `Collections` tab. This means that each time you add, update or delete an entry in your restaurant content-types, Meilisearch is automatically updated. -Once the indexing finishes, your restaurants are in Meilisearch. Access the [search preview](/learn/getting_started/search_preview) to confirm everything is working correctly by searching for “butter”. +Once the indexing finishes, your restaurants are in Meilisearch. Access the [search preview](/resources/self_hosting/getting_started/search_preview) to confirm everything is working correctly by searching for “butter”. GIF showing the word 'butter' being typed in the search bar and search results appearing instantly diff --git a/getting_started/glossary.mdx b/getting_started/glossary.mdx index 816b72bdac..161a61f81f 100644 --- a/getting_started/glossary.mdx +++ b/getting_started/glossary.mdx @@ -10,27 +10,27 @@ This glossary defines key terms used throughout the Meilisearch documentation, a ### Index -A collection of documents with shared settings. An index is the equivalent of a table in a relational database. Each index has a unique identifier (`uid`) and its own configuration for ranking, filtering, and other settings. [Learn more about indexes](/learn/getting_started/indexes). +A collection of documents with shared settings. An index is the equivalent of a table in a relational database. Each index has a unique identifier (`uid`) and its own configuration for ranking, filtering, and other settings. [Learn more about indexes](/resources/internals/indexes). ### Document -A JSON object stored in an index. Documents are the basic unit of data in Meilisearch. Each document contains fields (key-value pairs) and must have a unique primary key. [Learn more about documents](/learn/getting_started/documents). +A JSON object stored in an index. Documents are the basic unit of data in Meilisearch. Each document contains fields (key-value pairs) and must have a unique primary key. [Learn more about documents](/resources/internals/documents). ### Primary key -A unique identifier for each document in an index. Meilisearch uses the primary key to distinguish between documents. If you add a document with an existing primary key, the existing document is replaced. [Learn more about primary keys](/learn/getting_started/primary_key). +A unique identifier for each document in an index. Meilisearch uses the primary key to distinguish between documents. If you add a document with an existing primary key, the existing document is replaced. [Learn more about primary keys](/resources/internals/primary_key). ### Field -A key-value pair within a document. For example, `"title": "The Great Gatsby"` is a field where `title` is the attribute name and `"The Great Gatsby"` is the value. [Learn more about documents](/learn/getting_started/documents). +A key-value pair within a document. For example, `"title": "The Great Gatsby"` is a field where `title` is the attribute name and `"The Great Gatsby"` is the value. [Learn more about documents](/resources/internals/documents). ### API key -A token used to authenticate requests to a Meilisearch instance. Meilisearch uses three types of keys: a **master key** (used to create other keys), a **default admin API key** (full API access), and a **default search API key** (search-only access). [Learn more about API keys](/learn/security/basic_security). +A token used to authenticate requests to a Meilisearch instance. Meilisearch uses three types of keys: a **master key** (used to create other keys), a **default admin API key** (full API access), and a **default search API key** (search-only access). [Learn more about API keys](/resources/self_hosting/security/basic_security). ### Master key -A secret key set at launch that protects your Meilisearch instance. The master key is used to generate the default admin and search API keys. It should never be exposed to end users. [Learn more about security](/learn/security/basic_security). +A secret key set at launch that protects your Meilisearch instance. The master key is used to generate the default admin and search API keys. It should never be exposed to end users. [Learn more about security](/resources/self_hosting/security/basic_security). ### Tenant token diff --git a/getting_started/good_practices.mdx b/getting_started/good_practices.mdx index 3a1d060eaa..a3dd5e6897 100644 --- a/getting_started/good_practices.mdx +++ b/getting_started/good_practices.mdx @@ -161,7 +161,7 @@ Each release includes indexing and search performance improvements. Check the [c Monitor indexing progress with the task API - + Secure your Meilisearch instance with API keys diff --git a/getting_started/instant_meilisearch/docsearch.mdx b/getting_started/instant_meilisearch/docsearch.mdx index b59afe1ca7..0a0b3840eb 100644 --- a/getting_started/instant_meilisearch/docsearch.mdx +++ b/getting_started/instant_meilisearch/docsearch.mdx @@ -100,7 +100,7 @@ For other installation methods, refer to the [meilisearch-docsearch repository]( `` should be the **absolute** path of your configuration file defined at [the previous step](#configuration-file). The API key should have the permissions to add documents into your Meilisearch instance. In a production environment, we recommend providing the `Default Admin API Key` as it has enough permissions to perform such requests. -_More about [Meilisearch security](/learn/security/basic_security)._ +_More about [Meilisearch security](/resources/self_hosting/security/basic_security)._ We recommend running the scraper at each new deployment of your documentation using a CI/CD pipeline. @@ -159,7 +159,7 @@ These three fields are mandatory, but more [optional fields are available](https Since the configuration file is public, we strongly recommend providing a key that can only access [the search endpoint](/reference/api/search/search-with-post) , such as the `Default Search API Key`, in a production environment. -Read more about [Meilisearch security](/learn/security/basic_security). +Read more about [Meilisearch security](/resources/self_hosting/security/basic_security). ### For all kinds of documentation @@ -204,7 +204,7 @@ The `hostUrl` and the `apiKey` fields are the credentials of the Meilisearch ins We strongly recommend providing a `Default Search API Key` in a production environment, which is enough to perform search requests. -Read more about [Meilisearch security](/learn/security/basic_security). +Read more about [Meilisearch security](/resources/self_hosting/security/basic_security). The default behavior of this library fits perfectly for a documentation search bar, but you might need [some customizations](https://github.com/meilisearch/docs-searchbar.js#customization). diff --git a/getting_started/instant_meilisearch/react.mdx b/getting_started/instant_meilisearch/react.mdx index 795f992ca8..e51812df39 100644 --- a/getting_started/instant_meilisearch/react.mdx +++ b/getting_started/instant_meilisearch/react.mdx @@ -42,7 +42,7 @@ const { searchClient } = instantMeiliSearch( ## 4. Add the InstantSearch provider -`` is the root provider component for the InstantSearch library. It takes two props: the `searchClient` and the [index name](/learn/getting_started/indexes#index-uid). +`` is the root provider component for the InstantSearch library. It takes two props: the `searchClient` and the [index name](/resources/internals/indexes#index-uid). ```jsx import React from 'react'; diff --git a/getting_started/instant_meilisearch/vue.mdx b/getting_started/instant_meilisearch/vue.mdx index 18ce6d97b5..20364bff99 100644 --- a/getting_started/instant_meilisearch/vue.mdx +++ b/getting_started/instant_meilisearch/vue.mdx @@ -66,7 +66,7 @@ export default { These URL and API key point to a public Meilisearch instance that contains data from Steam video games. -The `ais-instant-search` widget is the mandatory wrapper that allows you to configure your search. It takes two props: the `search-client` and the [`index-name`](/learn/getting_started/indexes#index-uid). +The `ais-instant-search` widget is the mandatory wrapper that allows you to configure your search. It takes two props: the `search-client` and the [`index-name`](/resources/internals/indexes#index-uid). ## 5. Add a search bar and list search results diff --git a/getting_started/integrations/postman.mdx b/getting_started/integrations/postman.mdx index 96a06c3a72..a6eb9431a4 100644 --- a/getting_started/integrations/postman.mdx +++ b/getting_started/integrations/postman.mdx @@ -1,51 +1,55 @@ --- title: Postman collection for Meilisearch sidebarTitle: Postman -description: This how-to guide explains how to use Postman when testing and debugging Meilisearch's API. +description: Import Meilisearch's OpenAPI specification into Postman to test and debug the API with a ready-made collection. --- -Are you tired of using the `curl` command in your terminal to test Meilisearch? It can be tedious to re-write every route when wanting to try out an API. - -Postman is a platform that lets you create HTTP requests you can easily reuse and share with everyone. We provide a [Postman collection](https://github.com/meilisearch/meilisearch-postman) containing all the routes of the Meilisearch API! 🚀 +Postman is a platform that lets you create, organize, and reuse HTTP requests. You can import the Meilisearch OpenAPI specification directly into Postman to get a complete, up-to-date collection of all API routes. If you don't have Postman already, you can [download it here](https://www.postman.com/downloads/). It's free and available on many OS distributions. -## Import the collection +## Prerequisites -Once you have downloaded the [Postman collection](https://github.com/meilisearch/meilisearch-postman), you need to import it into Postman. +Download the Meilisearch OpenAPI specification file from the [Meilisearch GitHub repository](https://github.com/meilisearch/open-api/releases/latest). Save it somewhere on your computer. - - The 'Import' button - +## Import the OpenAPI specification -## Edit the configuration +Click the three-dot menu (**...**) at the top of the sidebar, then select **Import**. - Selecting 'Edit' from the overflow menu + The three-dot menu in the Postman sidebar with the 'Import' option highlighted -Set the "Token" if needed (set to `masterKey` by default): +In the import dialog, drag and drop the OpenAPI specification file or click **files** to select it from your computer. - The 'Token' field set to masterKey and 'Type' to Bearer Token in the 'Authorization' tab. + The Postman import dialog with a drop zone for files -Set `url` (set to Meilisearch's local port by default) and `indexUID` (set to `indexUID` by default): +Postman detects the file format and asks how to import it. Select **Postman Collection** to create a collection with all Meilisearch API routes, then click **Import**. - Setting the 'URL' to http://localhost:7700/ and 'indexUID' to indexUID in the Variables tab. + The import specification dialog with 'Postman Collection' selected -The `url` and `indexUID` variables are used in all the collection routes, like in this one: + +You can also select **OpenAPI 3.1 Specification with a Postman Collection** if you want to keep the raw specification alongside the collection. - Highlighting {{url}} and {{indexUID}} + The import specification dialog with 'OpenAPI 3.1 Specification with a Postman Collection' selected + -## Start to use it +## Configure authentication -You can now [run your Meilisearch instance](/learn/self_hosted/getting_started_with_self_hosted_meilisearch#setup-and-installation) and create your first index: +After importing, you need to configure your API key so Postman can authenticate requests to your Meilisearch instance. + +Individual requests use **Bearer Token** authentication. You can verify this by selecting any request and checking the **Authorization** tab. The token field references `{{bearerToken}}`, which Postman resolves from your global variables. - The 'Send' button + The Postman collection showing all Meilisearch API routes with the Authorization tab open and Bearer Token configured + +## Start using the collection + +You can now select any route from the sidebar, adjust parameters as needed, and click **Send** to make requests to your Meilisearch instance. diff --git a/getting_started/integrations/vercel.mdx b/getting_started/integrations/vercel.mdx index 1b33ad41a9..2ae43d45d7 100644 --- a/getting_started/integrations/vercel.mdx +++ b/getting_started/integrations/vercel.mdx @@ -68,7 +68,7 @@ Once you click on **Create project**, you should see the following message: “Y ### Understand and use Meilisearch API keys -Meilisearch creates [four default API keys](/learn/security/basic_security#obtaining-api-keys): `Default Search API Key`, `Default Admin API Key`, `Default Read-Only Admin API Key`, and `Default Chat API Key`. +Meilisearch creates [four default API keys](/resources/self_hosting/security/basic_security#obtaining-api-keys): `Default Search API Key`, `Default Admin API Key`, `Default Read-Only Admin API Key`, and `Default Chat API Key`. #### Admin API key @@ -78,10 +78,10 @@ Use the `Default Admin API Key`, to control who can access or create new documen Use the `Default Search API Key` to access the [search route](/reference/api/search/search-with-post). This is the one you want to use in your front end. -The Search and Admin API keys are automatically added to Vercel along with the Meilisearch URL. For more information on the other default keys, consult the [security documentation](/learn/security/basic_security#obtaining-api-keys). +The Search and Admin API keys are automatically added to Vercel along with the Meilisearch URL. For more information on the other default keys, consult the [security documentation](/resources/self_hosting/security/basic_security#obtaining-api-keys). -The master key (which hasn’t been added to Vercel) grants users full control over an instance. You can find it in your project’s overview on your [Meilisearch Cloud dashboard](https://cloud.meilisearch.com/projects/?utm_campaign=oss&utm_source=docs&utm_medium=vercel-integration). Read more about [Meilisearch security](/learn/security/differences_master_api_keys). +The master key (which hasn’t been added to Vercel) grants users full control over an instance. You can find it in your project’s overview on your [Meilisearch Cloud dashboard](https://cloud.meilisearch.com/projects/?utm_campaign=oss&utm_source=docs&utm_medium=vercel-integration). Read more about [Meilisearch security](/resources/self_hosting/security/master_api_keys). ### Review your project settings @@ -110,6 +110,6 @@ Use the [Meilisearch Cloud dashboard](https://cloud.meilisearch.com/projects/?ut ## Resources and next steps -Check out the [Cloud quick start](/learn/getting_started/cloud_quick_start) for a short introduction on how to add documents and start searching. We also provide many [SDKs and tools](/learn/resources/sdks), so you can use Meilisearch in your favorite language or framework. +Check out the [quick start guide](/resources/self_hosting/getting_started/quick_start#add-documents) for a short introduction on how to use Meilisearch. We also provide many [SDKs and tools](/resources/help/sdks), so you can use Meilisearch in your favorite language or framework. You are now ready to [start searching](/reference/api/search/search-with-post)! diff --git a/getting_started/overview.mdx b/getting_started/overview.mdx index 5497d0b181..326229e838 100644 --- a/getting_started/overview.mdx +++ b/getting_started/overview.mdx @@ -7,7 +7,7 @@ description: Meilisearch indexes your content and makes it accessible to both hu Meilisearch **indexes your content and makes it accessible to both humans and AI**. It stores your documents and embeddings, then exposes them through fast full-text search, semantic search, and conversational interfaces, all from a single API. - + Get started in minutes with Meilisearch Cloud diff --git a/guides/front_end/front_end_integration.mdx b/guides/front_end/front_end_integration.mdx deleted file mode 100644 index 0117473725..0000000000 --- a/guides/front_end/front_end_integration.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Front-end integration -description: Create a simple front-end interface to search through your dataset after following Meilisearch's quick start. ---- - -In the [quick start tutorial](/learn/self_hosted/getting_started_with_self_hosted_meilisearch), you learned how to launch Meilisearch and make a search request. This article will teach you how to create a simple front-end interface to search through your dataset. - -Using [`instant-meilisearch`](https://github.com/meilisearch/instant-meilisearch) is the easiest way to build a front-end interface for search. `instant-meilisearch` is a plugin that establishes communication between a Meilisearch instance and [InstantSearch](https://github.com/algolia/instantsearch.js). InstantSearch, an open-source project developed by Algolia, renders all the components needed to start searching. - -1. Create an empty file and name it `index.html` -2. Open it in a text editor like Notepad, Sublime Text, or Visual Studio Code -3. Copy-paste one the code sample below -4. Open `index.html` in your browser by double-clicking it in your folder - -```js - - - - - - - -
- -
-
- - - - - -``` - -Here's what's happening: - -- The first four lines of the `` add two container elements: `#searchbox` and `#hits`. `instant-meilisearch` creates the search bar inside `#searchbox` and lists search results in `#hits` -- The first two`