[{"data":1,"prerenderedAt":948},["ShallowReactive",2],{"docs-navigation":3,"docs-\u002Fdocs\u002Findexing\u002Ffull-sync":313,"docs-\u002Fdocs\u002Findexing\u002Ffull-sync-surround":945},[4],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Docs","\u002Fdocs","docs",[9,35,60,78,120,186,223,234,258,283],{"title":10,"description":11,"icon":12,"path":13,"stem":14,"children":15,"page":34},"Getting started","What Zaproo Search is, a quickstart, and wiring search into a storefront.","i-lucide-rocket","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",[16,22,28],{"title":17,"path":18,"stem":19,"description":20,"icon":21},"Introduction","\u002Fdocs\u002Fgetting-started\u002Fintroduction","docs\u002F1.getting-started\u002F1.introduction","What Zaproo Search is, the five things you work with, and how a product catalog becomes a search box on your shop.","i-lucide-book-open-text",{"title":23,"path":24,"stem":25,"description":26,"icon":27},"Quickstart","\u002Fdocs\u002Fgetting-started\u002Fquickstart","docs\u002F1.getting-started\u002F2.quickstart","From a new account to a first search request in six steps, with curl or from your AI agent.","i-lucide-zap",{"title":29,"path":30,"stem":31,"description":32,"icon":33},"Integrate a storefront","\u002Fdocs\u002Fgetting-started\u002Fstorefront","docs\u002F1.getting-started\u002F3.storefront","Build a search results page with facets and an autocomplete box on top of the search and suggest routes.","i-lucide-store",false,{"title":36,"description":37,"icon":38,"path":39,"stem":40,"children":41,"page":34},"Account and team","Sign-in, sessions, organizations, members, roles and projects.","i-lucide-users","\u002Fdocs\u002Faccount","docs\u002F2.account",[42,48,54],{"title":43,"path":44,"stem":45,"description":46,"icon":47},"Account and sign-in","\u002Fdocs\u002Faccount\u002Fsign-in","docs\u002F2.account\u002F1.sign-in","Create an account, verify your email, stay signed in, manage signed-in devices and change or reset your password.","i-lucide-log-in",{"title":49,"path":50,"stem":51,"description":52,"icon":53},"Organizations, members and roles","\u002Fdocs\u002Faccount\u002Forganizations","docs\u002F2.account\u002F2.organizations","What an organization holds, how to add members, and what owners, admins and members may do.","i-lucide-building-2",{"title":55,"path":56,"stem":57,"description":58,"icon":59},"Projects","\u002Fdocs\u002Faccount\u002Fprojects","docs\u002F2.account\u002F3.projects","Group the indices and API keys of one shop or one environment, and keep staging apart from production.","i-lucide-folder-kanban",{"title":61,"description":62,"icon":63,"path":64,"stem":65,"children":66,"page":34},"API keys and security","Secret and public keys, scopes, allowed origins, rate limits and errors.","i-lucide-key-round","\u002Fdocs\u002Fkeys","docs\u002F3.keys",[67,72],{"title":68,"path":69,"stem":70,"description":71,"icon":63},"API keys","\u002Fdocs\u002Fkeys\u002Fapi-keys","docs\u002F3.keys\u002F1.api-keys","Secret and public keys, full and read access, index scope, allowed origins, expiry, and how to revoke a key.",{"title":73,"path":74,"stem":75,"description":76,"icon":77},"Rate limits and errors","\u002Fdocs\u002Fkeys\u002Frate-limits","docs\u002F3.keys\u002F2.rate-limits","How many requests each route accepts per minute, what a 429 looks like, the error format and every error code with its HTTP status.","i-lucide-gauge",{"title":79,"description":80,"icon":81,"path":82,"stem":83,"children":84,"page":34},"Indexing","Indices, languages, mappings, documents, tasks, full catalog sync and reindexing.","i-lucide-database","\u002Fdocs\u002Findexing","docs\u002F4.indexing",[85,90,96,102,108,114],{"title":86,"path":87,"stem":88,"description":89,"icon":81},"Indices and languages","\u002Fdocs\u002Findexing\u002Findices","docs\u002F4.indexing\u002F1.indices","Create an index, pick its language, read its status, and change the language later with a reindex.",{"title":91,"path":92,"stem":93,"description":94,"icon":95},"Mapping and fields","\u002Fdocs\u002Findexing\u002Fmapping","docs\u002F4.indexing\u002F2.mapping","Field types, the five flags that decide what a field is used for, text analysis options, unmapped fields, and which changes need a reindex.","i-lucide-table-properties",{"title":97,"path":98,"stem":99,"description":100,"icon":101},"Documents and tasks","\u002Fdocs\u002Findexing\u002Fdocuments","docs\u002F4.indexing\u002F3.documents","Upload and delete documents in batches, follow each write as a task, retry safely with Idempotency-Key, and browse what the index holds.","i-lucide-file-json",{"title":103,"path":104,"stem":105,"description":106,"icon":107},"Full catalog sync","\u002Fdocs\u002Findexing\u002Ffull-sync","docs\u002F4.indexing\u002F4.full-sync","Replace the whole catalog with a replace session, so products missing from your export disappear from search, without downtime.","i-lucide-refresh-cw",{"title":109,"path":110,"stem":111,"description":112,"icon":113},"Reindex and versions","\u002Fdocs\u002Findexing\u002Fversions","docs\u002F4.indexing\u002F5.versions","Rebuild an index with its saved mapping and swap it in without downtime, follow or cancel the rebuild, and read activeVersion and buildingVersion.","i-lucide-git-compare-arrows",{"title":115,"path":116,"stem":117,"description":118,"icon":119},"Data source","\u002Fdocs\u002Findexing\u002Fdata-source","docs\u002F4.indexing\u002F6.data-source","Let Zaproo download your product feed on a schedule, map it to documents, write only what changed and delete what left the feed.","i-lucide-rss",{"title":121,"description":122,"icon":123,"path":124,"stem":125,"children":126,"page":34},"Integrations","Connect your shop. Magento 2, product feeds and the API work today; more platforms are coming.","i-lucide-plug-zap","\u002Fdocs\u002Fintegrations","docs\u002F4.integrations",[127,133,139,144,150,156,161,166,171,176,181],{"title":128,"path":129,"stem":130,"description":131,"icon":132},"Integrations overview","\u002Fdocs\u002Fintegrations\u002Foverview","docs\u002F4.integrations\u002F01.overview","The ways to get your catalog into Zaproo Search, which one to pick, and how an integration shows up in the cabinet.","i-lucide-layout-grid",{"title":134,"path":135,"stem":136,"description":137,"icon":138},"Magento 2","\u002Fdocs\u002Fintegrations\u002Fmagento","docs\u002F4.integrations\u002F02.magento","Install the Zaproo Search module for Magento 2, connect each store view to its own index, and keep the catalog in sync.","i-lucide-shopping-cart",{"title":140,"path":141,"stem":142,"description":143,"icon":119},"Product feed","\u002Fdocs\u002Fintegrations\u002Fproduct-feed","docs\u002F4.integrations\u002F03.product-feed","Connect any shop that can publish its catalog as a feed. Zaproo downloads it on a schedule and writes only what changed.",{"title":145,"path":146,"stem":147,"description":148,"icon":149},"REST API and MCP","\u002Fdocs\u002Fintegrations\u002Frest-api-and-mcp","docs\u002F4.integrations\u002F04.rest-api-and-mcp","Send documents from your own code with the REST API, or let an AI agent manage the index over MCP.","i-lucide-code",{"title":151,"path":152,"stem":153,"description":154,"icon":155},"Shopify","\u002Fdocs\u002Fintegrations\u002Fshopify","docs\u002F4.integrations\u002F05.shopify","A Zaproo Search integration for Shopify is coming soon. Until then, connect the shop through a product feed or the REST API.","i-lucide-shopping-bag",{"title":157,"path":158,"stem":159,"description":160,"icon":155},"WooCommerce","\u002Fdocs\u002Fintegrations\u002Fwoocommerce","docs\u002F4.integrations\u002F06.woocommerce","A Zaproo Search integration for WooCommerce is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":162,"path":163,"stem":164,"description":165,"icon":155},"Shopware","\u002Fdocs\u002Fintegrations\u002Fshopware","docs\u002F4.integrations\u002F07.shopware","A Zaproo Search integration for Shopware is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":167,"path":168,"stem":169,"description":170,"icon":155},"BigCommerce","\u002Fdocs\u002Fintegrations\u002Fbigcommerce","docs\u002F4.integrations\u002F08.bigcommerce","A Zaproo Search integration for BigCommerce is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":172,"path":173,"stem":174,"description":175,"icon":155},"PrestaShop","\u002Fdocs\u002Fintegrations\u002Fprestashop","docs\u002F4.integrations\u002F09.prestashop","A Zaproo Search integration for PrestaShop is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":177,"path":178,"stem":179,"description":180,"icon":155},"commercetools","\u002Fdocs\u002Fintegrations\u002Fcommercetools","docs\u002F4.integrations\u002F10.commercetools","A Zaproo Search integration for commercetools is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":182,"path":183,"stem":184,"description":185,"icon":155},"Salesforce Commerce Cloud","\u002Fdocs\u002Fintegrations\u002Fsalesforce-commerce-cloud","docs\u002F4.integrations\u002F11.salesforce-commerce-cloud","A Zaproo Search integration for Salesforce Commerce Cloud is coming soon. Until then, connect the shop through a product feed or the REST API.",{"title":187,"description":188,"icon":189,"path":190,"stem":191,"children":192,"page":34},"Search and relevance","The search API, search profiles, facets, synonyms and ranking rules.","i-lucide-search","\u002Fdocs\u002Fsearch","docs\u002F5.search",[193,199,205,211,217],{"title":194,"path":195,"stem":196,"description":197,"icon":198},"Search API","\u002Fdocs\u002Fsearch\u002Fsearch-api","docs\u002F5.search\u002F1.search-api","The search request and response, every filter form, sorting, paging, highlighting and the inline profile for previews.","i-lucide-search-code",{"title":200,"path":201,"stem":202,"description":203,"icon":204},"Search profiles","\u002Fdocs\u002Fsearch\u002Fprofiles","docs\u002F5.search\u002F2.profiles","Every setting of a search profile, what it does to results, and the mistakes to avoid.","i-lucide-sliders-horizontal",{"title":206,"path":207,"stem":208,"description":209,"icon":210},"Facets","\u002Fdocs\u002Fsearch\u002Ffacets","docs\u002F5.search\u002F3.facets","The filter panels next to the results, the four facet types, index facets and profile facets, and how a shopper's clicks change the counts.","i-lucide-list-filter",{"title":212,"path":213,"stem":214,"description":215,"icon":216},"Synonyms","\u002Fdocs\u002Fsearch\u002Fsynonyms","docs\u002F5.search\u002F4.synonyms","Let different words find the same products, with equivalent and one-way rules, bulk import and export in the Solr format, and no reindex.","i-lucide-arrow-left-right",{"title":218,"path":219,"stem":220,"description":221,"icon":222},"Ranking rules","\u002Fdocs\u002Fsearch\u002Frules","docs\u002F5.search\u002F5.rules","Change the results for chosen searches. Put products first, hide them, lift or lower a brand, narrow the results or weigh fields differently, on a schedule and per profile.","i-lucide-list-ordered",{"title":224,"description":225,"icon":226,"path":227,"stem":228,"children":229,"page":34},"Autocomplete","Query suggestions as the shopper types.","i-lucide-text-cursor-input","\u002Fdocs\u002Fautocomplete","docs\u002F6.autocomplete",[230],{"title":224,"path":231,"stem":232,"description":233,"icon":226},"\u002Fdocs\u002Fautocomplete\u002Fsuggestions","docs\u002F6.autocomplete\u002F1.suggestions","Query suggestions as the shopper types, built every hour from your own searches, field values and custom entries.",{"title":235,"description":236,"icon":237,"path":238,"stem":239,"children":240,"page":34},"Analytics","Searches, zero-result queries and latency.","i-lucide-chart-line","\u002Fdocs\u002Fanalytics","docs\u002F7.analytics",[241,246,252],{"title":242,"path":243,"stem":244,"description":245,"icon":237},"Search analytics","\u002Fdocs\u002Fanalytics\u002Fsearch-analytics","docs\u002F7.analytics\u002F1.search-analytics","What the analytics page counts, which traffic it leaves out, how the headline numbers are defined, how comparisons and retention work, and how to get the weekly digest.",{"title":247,"path":248,"stem":249,"description":250,"icon":251},"Reports","\u002Fdocs\u002Fanalytics\u002Freports","docs\u002F7.analytics\u002F2.reports","Every analytics report with the definition of each column, the opportunities list and its fix buttons, the per-query view with before and after, and the CSV download.","i-lucide-table",{"title":253,"path":254,"stem":255,"description":256,"icon":257},"Event tracking","\u002Fdocs\u002Fanalytics\u002Fevent-tracking","docs\u002F7.analytics\u002F3.event-tracking","Send clicks, add-to-cart, purchases and suggestion clicks from your storefront, tie them to the search with searchId, and a copy-paste script that does it.","i-lucide-mouse-pointer-click",{"title":259,"description":260,"icon":261,"path":262,"stem":263,"children":264,"page":34},"AI agents (MCP)","Connect Claude Code or any MCP client and manage search from an agent.","i-lucide-bot","\u002Fdocs\u002Fmcp","docs\u002F8.mcp",[265,271,277],{"title":266,"path":267,"stem":268,"description":269,"icon":270},"MCP setup","\u002Fdocs\u002Fmcp\u002Fsetup","docs\u002F8.mcp\u002F1.setup","Connect Claude Code or any MCP client to Zaproo Search and manage indices, documents, profiles, synonyms and ranking rules from your agent.","i-lucide-plug",{"title":272,"path":273,"stem":274,"description":275,"icon":276},"MCP tools","\u002Fdocs\u002Fmcp\u002Ftools","docs\u002F8.mcp\u002F2.tools","Every tool the Zaproo Search MCP server offers, what an agent can do with each group, and prompts to start from.","i-lucide-wrench",{"title":278,"path":279,"stem":280,"description":281,"icon":282},"Resources and prompts","\u002Fdocs\u002Fmcp\u002Fresources","docs\u002F8.mcp\u002F3.resources","The index resources an MCP client can read, the tune_relevance prompt, and the errors the MCP server answers.","i-lucide-library",{"title":284,"description":285,"icon":286,"path":287,"stem":288,"children":289,"page":34},"Reference","Every REST route, every limit, plans and billing, and status.","i-lucide-book-open","\u002Fdocs\u002Freference","docs\u002F9.reference",[290,296,301,307],{"title":291,"path":292,"stem":293,"description":294,"icon":295},"REST API","\u002Fdocs\u002Freference\u002Frest-api","docs\u002F9.reference\u002F1.rest-api","The routes of the Zaproo Search REST API, grouped by area, with who may call it.","i-lucide-list-tree",{"title":297,"path":298,"stem":299,"description":300,"icon":77},"Limits","\u002Fdocs\u002Freference\u002Flimits","docs\u002F9.reference\u002F2.limits","Every size limit, cap and default of the Zaproo Search API in one place, with what happens when you reach it.",{"title":302,"path":303,"stem":304,"description":305,"icon":306},"Plans and billing","\u002Fdocs\u002Freference\u002Fbilling","docs\u002F9.reference\u002F3.billing","The plans, how usage is measured, what happens near a quota, and how plan changes and invoices work.","i-lucide-credit-card",{"title":308,"path":309,"stem":310,"description":311,"icon":312},"Status","\u002Fdocs\u002Freference\u002Fstatus","docs\u002F9.reference\u002F4.status","The status page and the status route, what each service covers and how to use them in your own monitoring.","i-lucide-activity",{"id":314,"title":103,"body":315,"description":106,"extension":940,"meta":941,"navigation":942,"path":104,"seo":943,"stem":105,"__hash__":944},"docs\u002Fdocs\u002F4.indexing\u002F4.full-sync.md",{"type":316,"value":317,"toc":924},"minimark",[318,323,327,330,343,351,355,358,369,385,389,679,683,688,695,779,795,799,802,816,820,829,833,888,892,906,910,920],[319,320,322],"h2",{"id":321},"when-to-use-a-replace-session","When to use a replace session",[324,325,326],"p",{},"Upserts and deletes change the documents you name. They cannot remove a product you forgot to delete. A replace session makes the index hold exactly what you send: you open it, send the whole catalog in batches and commit. Search switches to the new catalog in one step, and every document you did not send is gone.",[324,328,329],{},"Use a replace session when:",[331,332,333,337,340],"ul",{},[334,335,336],"li",{},"your shop exports the full catalog on a schedule, for example every night, and you have no reliable list of deleted products;",[334,338,339],{},"the index has drifted from the shop and you want a clean copy;",[334,341,342],{},"you changed the mapping and want to rebuild from your source data instead of from the stored documents.",[324,344,345,346,350],{},"Use ",[347,348,349],"a",{"href":98},"upserts and deletes"," for changes during the day. They are cheaper, and they keep working while a session is open.",[319,352,354],{"id":353},"how-a-session-works","How a session works",[324,356,357],{},"Opening a session builds a new, empty version of the index next to the live one, with the saved mapping. Search keeps using the live version the whole time.",[331,359,360,363,366],{},[334,361,362],{},"Batches sent to the session go to the new version only.",[334,364,365],{},"Normal upserts and deletes sent while the session is open go to both versions, so they survive the commit.",[334,367,368],{},"Commit waits until every batch is written, then swaps search to the new version in one step.",[324,370,371,372,376,377,380,381,384],{},"The index's status is ",[373,374,375],"code",{},"REINDEXING"," while the session is open, and its ",[373,378,379],{},"buildingVersion"," is the session's ",[373,382,383],{},"version",".",[319,386,388],{"id":387},"run-a-sync","Run a sync",[390,391,393,398,404,465,548,554,558,561,576,644,648,651,655,658],"steps",{"level":392},"3",[394,395,397],"h3",{"id":396},"open-a-session","Open a session",[399,400],"api-route",{"auth":401,"method":402,"path":403},"Project admin or a full-access secret key","POST","\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Freplace-sessions",[405,406,411],"pre",{"className":407,"code":408,"language":409,"meta":410,"style":410},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","curl -X POST https:\u002F\u002Fapi.zaproo-search.com\u002Fv1\u002Fprojects\u002F$PROJECT_ID\u002Findices\u002F$INDEX_ID\u002Freplace-sessions \\\n  -H \"Authorization: Bearer $ZS_KEY\"\n","bash","",[373,412,413,450],{"__ignoreMap":410},[414,415,418,422,426,430,433,437,440,443,446],"span",{"class":416,"line":417},"line",1,[414,419,421],{"class":420},"szw1H","curl",[414,423,425],{"class":424},"ssYy9"," -X",[414,427,429],{"class":428},"semJd"," POST",[414,431,432],{"class":428}," https:\u002F\u002Fapi.zaproo-search.com\u002Fv1\u002Fprojects\u002F",[414,434,436],{"class":435},"s7iLA","$PROJECT_ID",[414,438,439],{"class":428},"\u002Findices\u002F",[414,441,442],{"class":435},"$INDEX_ID",[414,444,445],{"class":428},"\u002Freplace-sessions",[414,447,449],{"class":448},"sklAV"," \\\n",[414,451,453,456,459,462],{"class":416,"line":452},2,[414,454,455],{"class":424},"  -H",[414,457,458],{"class":428}," \"Authorization: Bearer ",[414,460,461],{"class":435},"$ZS_KEY",[414,463,464],{"class":428},"\"\n",[405,466,470],{"className":467,"code":468,"language":469,"meta":410,"style":410},"language-json shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","{\n  \"id\": \"5d2c9a40-8a51-4c3e-b8f1-2f6d0e7c9b13\",\n  \"version\": 4,\n  \"status\": \"OPEN\",\n  \"expiresAt\": \"2026-10-16T15:30:00.000Z\",\n  \"commitTaskId\": null\n}\n","json",[373,471,472,477,492,505,518,531,542],{"__ignoreMap":410},[414,473,474],{"class":416,"line":417},[414,475,476],{"class":435},"{\n",[414,478,479,483,486,489],{"class":416,"line":452},[414,480,482],{"class":481},"sb7M8","  \"id\"",[414,484,485],{"class":435},": ",[414,487,488],{"class":428},"\"5d2c9a40-8a51-4c3e-b8f1-2f6d0e7c9b13\"",[414,490,491],{"class":435},",\n",[414,493,495,498,500,503],{"class":416,"line":494},3,[414,496,497],{"class":481},"  \"version\"",[414,499,485],{"class":435},[414,501,502],{"class":424},"4",[414,504,491],{"class":435},[414,506,508,511,513,516],{"class":416,"line":507},4,[414,509,510],{"class":481},"  \"status\"",[414,512,485],{"class":435},[414,514,515],{"class":428},"\"OPEN\"",[414,517,491],{"class":435},[414,519,521,524,526,529],{"class":416,"line":520},5,[414,522,523],{"class":481},"  \"expiresAt\"",[414,525,485],{"class":435},[414,527,528],{"class":428},"\"2026-10-16T15:30:00.000Z\"",[414,530,491],{"class":435},[414,532,534,537,539],{"class":416,"line":533},6,[414,535,536],{"class":481},"  \"commitTaskId\"",[414,538,485],{"class":435},[414,540,541],{"class":424},"null\n",[414,543,545],{"class":416,"line":544},7,[414,546,547],{"class":435},"}\n",[324,549,550,551,384],{},"Only one version can be built at a time. If a reindex or another session is running, the API answers ",[373,552,553],{},"409 VERSION_BUILDING",[394,555,557],{"id":556},"send-the-catalog-in-batches","Send the catalog in batches",[399,559],{"auth":401,"method":402,"path":560},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Freplace-sessions\u002F:sessionId\u002Fdocuments",[324,562,563,564,567,568,571,572,575],{},"The body is the same bare array as an upsert, with the same limits: up to 1000 documents and 10 MB per request. Each batch answers ",[373,565,566],{},"202"," with a ",[373,569,570],{},"SESSION_BATCH"," task. Send an ",[373,573,574],{},"Idempotency-Key"," with each batch so a retry does not send it twice.",[405,577,579],{"className":407,"code":578,"language":409,"meta":410,"style":410},"curl -X POST https:\u002F\u002Fapi.zaproo-search.com\u002Fv1\u002Fprojects\u002F$PROJECT_ID\u002Findices\u002F$INDEX_ID\u002Freplace-sessions\u002F$SESSION_ID\u002Fdocuments \\\n  -H \"Authorization: Bearer $ZS_KEY\" -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Idempotency-Key: nightly-2026-10-16-batch-1\" \\\n  -d '[{\"id\": \"tv-1\", \"title\": \"55 inch OLED TV\", \"price\": 899}]'\n",[373,580,581,608,627,636],{"__ignoreMap":410},[414,582,583,585,587,589,591,593,595,597,600,603,606],{"class":416,"line":417},[414,584,421],{"class":420},[414,586,425],{"class":424},[414,588,429],{"class":428},[414,590,432],{"class":428},[414,592,436],{"class":435},[414,594,439],{"class":428},[414,596,442],{"class":435},[414,598,599],{"class":428},"\u002Freplace-sessions\u002F",[414,601,602],{"class":435},"$SESSION_ID",[414,604,605],{"class":428},"\u002Fdocuments",[414,607,449],{"class":448},[414,609,610,612,614,616,619,622,625],{"class":416,"line":452},[414,611,455],{"class":424},[414,613,458],{"class":428},[414,615,461],{"class":435},[414,617,618],{"class":428},"\"",[414,620,621],{"class":424}," -H",[414,623,624],{"class":428}," \"Content-Type: application\u002Fjson\"",[414,626,449],{"class":448},[414,628,629,631,634],{"class":416,"line":494},[414,630,455],{"class":424},[414,632,633],{"class":428}," \"Idempotency-Key: nightly-2026-10-16-batch-1\"",[414,635,449],{"class":448},[414,637,638,641],{"class":416,"line":507},[414,639,640],{"class":424},"  -d",[414,642,643],{"class":428}," '[{\"id\": \"tv-1\", \"title\": \"55 inch OLED TV\", \"price\": 899}]'\n",[394,645,647],{"id":646},"check-every-batch","Check every batch",[324,649,650],{},"Poll each batch task until it finishes. A document that failed in a batch is not in the new version, so it disappears from search when you commit. Fix and resend failed documents before you commit.",[394,652,654],{"id":653},"commit","Commit",[399,656],{"auth":401,"method":402,"path":657},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Freplace-sessions\u002F:sessionId\u002Fcommit",[324,659,660,661,567,663,666,667,670,671,674,675,678],{},"The answer is ",[373,662,566],{},[373,664,665],{},"SESSION_COMMIT"," task. The session moves to ",[373,668,669],{},"COMMITTING"," and takes no more batches. When the task succeeds, the session is ",[373,672,673],{},"COMMITTED",", the index's ",[373,676,677],{},"activeVersion"," is the session's version and search returns the new catalog.",[319,680,682],{"id":681},"watch-a-session","Watch a session",[399,684],{"auth":685,"method":686,"path":687},"Project member or any secret key","GET","\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Freplace-sessions\u002F:sessionId",[324,689,690,691,694],{},"The session's ",[373,692,693],{},"status"," is one of:",[696,697,698,710],"table",{},[699,700,701],"thead",{},[702,703,704,707],"tr",{},[705,706,308],"th",{},[705,708,709],{},"Meaning",[711,712,713,724,733,742,752,766],"tbody",{},[702,714,715,721],{},[716,717,718],"td",{},[373,719,720],{},"OPEN",[716,722,723],{},"Takes batches.",[702,725,726,730],{},[716,727,728],{},[373,729,669],{},[716,731,732],{},"Commit is running. No more batches.",[702,734,735,739],{},[716,736,737],{},[373,738,673],{},[716,740,741],{},"The new catalog is live.",[702,743,744,749],{},[716,745,746],{},[373,747,748],{},"ABORTED",[716,750,751],{},"You aborted it. The live index is as it was.",[702,753,754,759],{},[716,755,756],{},[373,757,758],{},"EXPIRED",[716,760,761,762,765],{},"It stayed open past ",[373,763,764],{},"expiresAt",". The live index is as it was.",[702,767,768,773],{},[716,769,770],{},[373,771,772],{},"FAILED",[716,774,775,776,778],{},"The commit failed. The live index is as it was, and the index status is ",[373,777,772],{}," until the next build.",[324,780,781,782,785,786,790,791,794],{},"The index itself names its open session in ",[373,783,784],{},"openReplaceSessionId",". In the cabinet, the ",[787,788,789],"strong",{},"Reindex"," panel on the index overview and on ",[787,792,793],{},"Fields & mapping"," shows an open session with its status, version and expiry. Sessions are opened, filled and committed through the API only.",[319,796,798],{"id":797},"abort-a-session","Abort a session",[399,800],{"auth":401,"method":402,"path":801},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Freplace-sessions\u002F:sessionId\u002Fabort",[324,803,804,805,808,809,811,812,815],{},"Aborting drops the new version and cancels batches that have not finished. Search never sees any of it. In the cabinet, click ",[787,806,807],{},"Abort session"," in the ",[787,810,789],{}," panel. ",[787,813,814],{},"Cancel reindex"," does not apply to a session.",[319,817,819],{"id":818},"session-lifetime","Session lifetime",[324,821,822,823,825,826,828],{},"A session expires 6 hours after it was opened, counted from the open, not from the last batch. Within a minute of ",[373,824,764],{},", an open session becomes ",[373,827,758],{}," and its new version is dropped. Commit before then. A session that is already committing does not expire.",[319,830,832],{"id":831},"errors","Errors",[696,834,835,845],{},[699,836,837],{},[702,838,839,842],{},[705,840,841],{},"Code",[705,843,844],{},"When",[711,846,847,856,868,878],{},[702,848,849,853],{},[716,850,851],{},[373,852,553],{},[716,854,855],{},"Opening a session while a reindex or another session builds a version.",[702,857,858,863],{},[716,859,860],{},[373,861,862],{},"409 SESSION_NOT_OPEN",[716,864,865,866,384],{},"Sending a batch, committing or aborting a session that is no longer ",[373,867,720],{},[702,869,870,875],{},[716,871,872],{},[373,873,874],{},"404 SESSION_NOT_FOUND",[716,876,877],{},"The session does not exist or belongs to another index.",[702,879,880,885],{},[716,881,882],{},[373,883,884],{},"400 INVALID_DOCUMENTS",[716,886,887],{},"A batch has documents that do not match the mapping. Nothing from that batch is written.",[319,889,891],{"id":890},"common-mistakes","Common mistakes",[331,893,894,897,903],{},[334,895,896],{},"Committing before every batch task has finished without errors. Commit waits for the batches, but it does not check their results. Failed documents are missing from the new catalog.",[334,898,899,900,902],{},"Opening a session and never committing it. The index stays ",[373,901,375],{},", and no reindex or breaking mapping change can start until the session expires 6 hours later. Abort it instead.",[334,904,905],{},"Running a full sync for a handful of changes. Upserts are enough, and they do not block other builds.",[319,907,909],{"id":908},"related","Related",[331,911,912,916],{},[334,913,914],{},[347,915,97],{"href":98},[334,917,918],{},[347,919,109],{"href":110},[921,922,923],"style",{},"html pre.shiki code .szw1H, html code.shiki .szw1H{--shiki-light:#702C00;--shiki-default:#702C00;--shiki-dark:#FFB757}html pre.shiki code .ssYy9, html code.shiki .ssYy9{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF}html pre.shiki code .semJd, html code.shiki .semJd{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF}html pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}html pre.shiki code .sklAV, html code.shiki .sklAV{--shiki-light:#A0111F;--shiki-default:#A0111F;--shiki-dark:#FF9492}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sb7M8, html code.shiki .sb7M8{--shiki-light:#024C1A;--shiki-default:#024C1A;--shiki-dark:#72F088}",{"title":410,"searchDepth":452,"depth":452,"links":925},[926,927,928,934,935,936,937,938,939],{"id":321,"depth":452,"text":322},{"id":353,"depth":452,"text":354},{"id":387,"depth":452,"text":388,"children":929},[930,931,932,933],{"id":396,"depth":494,"text":397},{"id":556,"depth":494,"text":557},{"id":646,"depth":494,"text":647},{"id":653,"depth":494,"text":654},{"id":681,"depth":452,"text":682},{"id":797,"depth":452,"text":798},{"id":818,"depth":452,"text":819},{"id":831,"depth":452,"text":832},{"id":890,"depth":452,"text":891},{"id":908,"depth":452,"text":909},"md",{},{"icon":107},{"title":103,"description":106},"WjzfaZl9L0sJw87-G6urk_m-DatbV0ENzW0o7ZEMHws",[946,947],{"title":97,"path":98,"stem":99,"description":100,"icon":101,"children":-1},{"title":109,"path":110,"stem":111,"description":112,"icon":113,"children":-1},1792679791163]