[{"data":1,"prerenderedAt":2376},["ShallowReactive",2],{"docs-navigation":3,"docs-\u002Fdocs\u002Findexing\u002Fmapping":331,"docs-\u002Fdocs\u002Findexing\u002Fmapping-surround":2373},[4],{"title":5,"path":6,"stem":7,"children":8,"page":46},"Docs","\u002Fdocs","docs",[9,47,72,90,132,198,241,252,276,301],{"title":10,"description":11,"icon":12,"path":13,"stem":14,"children":15,"page":46},"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,34,40],{"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","Set up search for your shop in the cabinet, from a new account to a first search, with the API and MCP as other ways to do the same.","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",{"title":35,"path":36,"stem":37,"description":38,"icon":39},"JavaScript SDK","\u002Fdocs\u002Fgetting-started\u002Fjavascript-sdk","docs\u002F1.getting-started\u002F4.javascript-sdk","Search, autocomplete and event tracking from a storefront with one small client that runs in the browser, on your server and in edge functions.","i-lucide-braces",{"title":41,"path":42,"stem":43,"description":44,"icon":45},"AI shopping assistant","\u002Fdocs\u002Fgetting-started\u002Fai-assistant","docs\u002F1.getting-started\u002F5.ai-assistant","A chat widget for your storefront that finds products and answers questions from your indexes.","i-lucide-sparkles",false,{"title":48,"description":49,"icon":50,"path":51,"stem":52,"children":53,"page":46},"Account and team","Sign-in, sessions, organizations, members, roles and projects.","i-lucide-users","\u002Fdocs\u002Faccount","docs\u002F2.account",[54,60,66],{"title":55,"path":56,"stem":57,"description":58,"icon":59},"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":61,"path":62,"stem":63,"description":64,"icon":65},"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":67,"path":68,"stem":69,"description":70,"icon":71},"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":73,"description":74,"icon":75,"path":76,"stem":77,"children":78,"page":46},"API keys and security","Secret and public keys, scopes, allowed origins, rate limits and errors.","i-lucide-key-round","\u002Fdocs\u002Fkeys","docs\u002F3.keys",[79,84],{"title":80,"path":81,"stem":82,"description":83,"icon":75},"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":85,"path":86,"stem":87,"description":88,"icon":89},"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":91,"description":92,"icon":93,"path":94,"stem":95,"children":96,"page":46},"Indexing","Indices, languages, mappings, documents, tasks, full catalog sync and reindexing.","i-lucide-database","\u002Fdocs\u002Findexing","docs\u002F4.indexing",[97,102,108,114,120,126],{"title":98,"path":99,"stem":100,"description":101,"icon":93},"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":103,"path":104,"stem":105,"description":106,"icon":107},"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":109,"path":110,"stem":111,"description":112,"icon":113},"Documents and tasks","\u002Fdocs\u002Findexing\u002Fdocuments","docs\u002F4.indexing\u002F3.documents","Upload, browse and delete documents in the cabinet or through the API, follow each write as a task, and retry safely with Idempotency-Key.","i-lucide-file-json",{"title":115,"path":116,"stem":117,"description":118,"icon":119},"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":121,"path":122,"stem":123,"description":124,"icon":125},"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":127,"path":128,"stem":129,"description":130,"icon":131},"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":133,"description":134,"icon":135,"path":136,"stem":137,"children":138,"page":46},"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",[139,145,151,156,162,168,173,178,183,188,193],{"title":140,"path":141,"stem":142,"description":143,"icon":144},"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 a connected shop shows up in the cabinet.","i-lucide-layout-grid",{"title":146,"path":147,"stem":148,"description":149,"icon":150},"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":152,"path":153,"stem":154,"description":155,"icon":131},"Product feed","\u002Fdocs\u002Fintegrations\u002Fproduct-feed","docs\u002F4.integrations\u002F03.product-feed","Connect any shop that can publish its catalog as a feed. You set it up in the cabinet, and Zaproo downloads the feed on a schedule and writes only what changed.",{"title":157,"path":158,"stem":159,"description":160,"icon":161},"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":163,"path":164,"stem":165,"description":166,"icon":167},"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":169,"path":170,"stem":171,"description":172,"icon":167},"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":174,"path":175,"stem":176,"description":177,"icon":167},"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":179,"path":180,"stem":181,"description":182,"icon":167},"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":184,"path":185,"stem":186,"description":187,"icon":167},"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":189,"path":190,"stem":191,"description":192,"icon":167},"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":194,"path":195,"stem":196,"description":197,"icon":167},"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":199,"description":200,"icon":201,"path":202,"stem":203,"children":204,"page":46},"Search and relevance","The search API, search profiles, facets, synonyms and ranking rules.","i-lucide-search","\u002Fdocs\u002Fsearch","docs\u002F5.search",[205,211,217,223,229,235],{"title":206,"path":207,"stem":208,"description":209,"icon":210},"Search API","\u002Fdocs\u002Fsearch\u002Fsearch-api","docs\u002F5.search\u002F1.search-api","Try a search in the playground, then the search request and response for developers, with every filter form, sorting, paging, highlighting and the inline profile.","i-lucide-search-code",{"title":212,"path":213,"stem":214,"description":215,"icon":216},"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":218,"path":219,"stem":220,"description":221,"icon":222},"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":224,"path":225,"stem":226,"description":227,"icon":228},"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":230,"path":231,"stem":232,"description":233,"icon":234},"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":236,"path":237,"stem":238,"description":239,"icon":240},"Language groups","\u002Fdocs\u002Fsearch\u002Flanguage-groups","docs\u002F5.search\u002F6.language-groups","Let each store of a multilingual shop find its products by the other stores' text, so an English search on the Estonian store still finds the Estonian product.","i-lucide-languages",{"title":242,"description":243,"icon":244,"path":245,"stem":246,"children":247,"page":46},"Autocomplete","Query suggestions as the shopper types.","i-lucide-text-cursor-input","\u002Fdocs\u002Fautocomplete","docs\u002F6.autocomplete",[248],{"title":242,"path":249,"stem":250,"description":251,"icon":244},"\u002Fdocs\u002Fautocomplete\u002Fsuggestions","docs\u002F6.autocomplete\u002F1.suggestions","Set up query suggestions in the cabinet. They are built every hour from your shoppers' searches, field values and custom entries.",{"title":253,"description":254,"icon":255,"path":256,"stem":257,"children":258,"page":46},"Analytics","Searches, zero-result queries and latency.","i-lucide-chart-line","\u002Fdocs\u002Fanalytics","docs\u002F7.analytics",[259,264,270],{"title":260,"path":261,"stem":262,"description":263,"icon":255},"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":265,"path":266,"stem":267,"description":268,"icon":269},"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":271,"path":272,"stem":273,"description":274,"icon":275},"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":277,"description":278,"icon":279,"path":280,"stem":281,"children":282,"page":46},"AI agents (MCP)","Connect Claude Code or any MCP client and manage search from an agent.","i-lucide-bot","\u002Fdocs\u002Fmcp","docs\u002F8.mcp",[283,289,295],{"title":284,"path":285,"stem":286,"description":287,"icon":288},"MCP setup","\u002Fdocs\u002Fmcp\u002Fsetup","docs\u002F8.mcp\u002F1.setup","Connect Claude Code or another MCP client to your project from the cabinet's MCP connection page, and let an agent manage indices, documents, profiles, synonyms and rules.","i-lucide-plug",{"title":290,"path":291,"stem":292,"description":293,"icon":294},"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":296,"path":297,"stem":298,"description":299,"icon":300},"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":302,"description":303,"icon":304,"path":305,"stem":306,"children":307,"page":46},"Reference","Every REST route, every limit, plans and billing, and status.","i-lucide-book-open","\u002Fdocs\u002Freference","docs\u002F9.reference",[308,314,319,325],{"title":309,"path":310,"stem":311,"description":312,"icon":313},"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":315,"path":316,"stem":317,"description":318,"icon":89},"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":320,"path":321,"stem":322,"description":323,"icon":324},"Plans and billing","\u002Fdocs\u002Freference\u002Fbilling","docs\u002F9.reference\u002F3.billing","Check your plan and usage on the Billing & usage page, change the plan, download invoices, and see how quotas and proration work.","i-lucide-credit-card",{"title":326,"path":327,"stem":328,"description":329,"icon":330},"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":332,"title":103,"body":333,"description":106,"extension":2368,"meta":2369,"navigation":2370,"path":104,"seo":2371,"stem":105,"__hash__":2372},"docs\u002Fdocs\u002F4.indexing\u002F2.mapping.md",{"type":334,"value":335,"toc":2335},"minimark",[336,341,345,354,365,369,377,385,528,546,561,565,571,602,619,622,626,632,636,639,695,972,989,993,999,1154,1167,1171,1180,1215,1249,1277,1302,1319,1322,1335,1338,1358,1375,1402,1428,1432,1491,1494,1498,1504,1596,1634,1637,1650,1654,1677,1694,1701,1705,1708,1732,1838,1845,1848,1857,1864,1897,1903,2048,2077,2080,2105,2108,2134,2138,2153,2172,2190,2194,2300,2304,2331],[337,338,340],"h2",{"id":339},"what-the-mapping-is","What the mapping is",[342,343,344],"p",{},"The mapping lists every field search knows about. Each field has a type and five flags that say what it is used for: searched, filtered, shown as a facet, sorted by or returned with results. Searchable fields also have text analysis options.",[342,346,347,348,353],{},"A document may carry fields the mapping does not list. Zaproo stores them, but search ignores them until you map them. See ",[349,350,352],"a",{"href":351},"#unmapped-fields","unmapped fields",".",[342,355,356,357,361,362,353],{},"The first upload to a new index maps every field it can recognise (see ",[349,358,360],{"href":359},"#inferred-mapping","inferred mapping","). Check the result before you build ",[349,363,364],{"href":213},"search profiles",[337,366,368],{"id":367},"change-fields-in-the-cabinet","Change fields in the cabinet",[342,370,371,372,376],{},"Open the index, then ",[373,374,375],"strong",{},"Fields & mapping",". The table lists every field with its type and a badge for each setting that is on.",[342,378,379],{},[380,381],"img",{"alt":382,"src":383,"title":384},"The Fields & mapping page with the Reindex panel on top, a Filter fields box and a table of fields such as id, sku, name and sold, each with its type, setting badges like Searchable, Filterable and Returnable, and Edit and Remove buttons","\u002Fdocs\u002Fscreenshots\u002Fmapping.png","Fields & mapping lists every field with its type and settings",[386,387,389,394,438,443,447,490,494,520],"steps",{"level":388},"3",[390,391,393],"h3",{"id":392},"edit-a-field","Edit a field",[342,395,396,397,400,401,404,405,408,409,412,413,412,416,412,419,422,423,426,427,429,430,434,435,353],{},"Click ",[373,398,399],{},"Edit"," on the field's row. In the dialog, pick the ",[373,402,403],{},"Type"," and tick what the field is ",[373,406,407],{},"Used for",": ",[373,410,411],{},"Searchable",", ",[373,414,415],{},"Filterable",[373,417,418],{},"Facetable",[373,420,421],{},"Sortable"," or ",[373,424,425],{},"Returnable",". Once ",[373,428,411],{}," is on, the dialog also shows the ",[349,431,433],{"href":432},"#text-analysis","Text analysis"," options. Click ",[373,436,437],{},"Apply",[342,439,440,442],{},[373,441,437],{}," only puts the change into a draft. Nothing is saved yet, so you can edit several fields first.",[390,444,446],{"id":445},"add-or-remove-fields","Add or remove fields",[342,448,449,450,453,454,458,459,462,463,466,467,470,471,474,475,478,479,482,483,485,486,489],{},"To add a field, enter its ",[373,451,452],{},"New field name"," (for example ",[455,456,457],"code",{},"attributes.color","), pick the ",[373,460,461],{},"New field type"," and click ",[373,464,465],{},"Add field",". To add a field your documents already carry, click ",[373,468,469],{},"Add"," next to it under ",[373,472,473],{},"Not mapped yet",". To drop a field, click ",[373,476,477],{},"Remove"," on its row. The ",[455,480,481],{},"id"," field has no ",[373,484,477],{}," button, and neither does a saved field while a shop plugin manages the mapping (see ",[349,487,133],{"href":488},"#integrations",").",[390,491,493],{"id":492},"review-and-save","Review and save",[342,495,496,497,500,501,422,504,507,508,511,512,515,516,353],{},"The ",[373,498,499],{},"Changes"," panel lists every draft change and whether it is ",[455,502,503],{},"additive",[455,505,506],{},"breaking",". A breaking draft shows ",[373,509,510],{},"Saving flags the index as NEEDS_REINDEX."," If the draft would break a profile, rule, the index facets, autocomplete or the data source, the panel names and links each use of the field, and ",[373,513,514],{},"Save mapping"," stays off until you change them. See ",[349,517,519],{"href":518},"#fields-in-use","Fields in use",[342,521,396,522,524,525,353],{},[373,523,514],{},". To throw the draft away instead, click ",[373,526,527],{},"Discard changes",[342,529,530,531,534,535,538,539,542,543,353],{},"After a breaking save, the page shows ",[373,532,533],{},"Reindex needed",". Click ",[373,536,537],{},"Reindex now"," in the ",[373,540,541],{},"Reindex"," panel at the top of the page to build the index with the new mapping. See ",[349,544,121],{"href":545},"\u002Fdocs\u002Findexing\u002Fversions#start-a-reindex",[342,547,548,549,552,553,556,557,560],{},"The table groups every ",[455,550,551],{},"attributes.*"," field under one collapsible ",[373,554,555],{},"attributes"," row, which starts collapsed when there are more than eight of them. ",[373,558,559],{},"Filter fields"," above the table narrows it to the fields whose full name contains what you type.",[390,562,564],{"id":563},"find-fields-by-setting-or-type","Find fields by setting or type",[342,566,567,568,570],{},"Under ",[373,569,559],{},", two rows of chips narrow the table further. Each chip shows how many fields it matches.",[572,573,574,592],"ul",{},[575,576,577,408,580,412,582,412,584,412,586,588,589,591],"li",{},[373,578,579],{},"Settings",[373,581,411],{},[373,583,415],{},[373,585,418],{},[373,587,421],{}," and ",[373,590,425],{},". Pick several to see the fields that have all of them, for example every field that is both filterable and sortable.",[575,593,594,596,597,601],{},[373,595,403],{},": one chip for each ",[349,598,600],{"href":599},"#field-types","field type"," the mapping uses. Pick several to see the fields of any of those types.",[342,603,604,605,608,609,611,612,615,616,618],{},"Click a chip again to turn it off. The chips and the text box work together, so ",[455,606,607],{},"price"," with ",[373,610,421],{}," on shows the sortable fields whose name contains \"price\". ",[373,613,614],{},"Reset filters"," clears the text and every chip. While a filter is on, the ",[373,617,555],{}," group opens so that matching attributes are not hidden.",[342,620,621],{},"Only organization owners and admins can change the mapping. Members see the table without the edit controls.",[337,623,625],{"id":624},"change-the-mapping-with-the-api","Change the mapping with the API",[627,628],"api-route",{"auth":629,"method":630,"path":631},"Project member or any secret key","GET","\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fmapping",[627,633],{"auth":634,"method":635,"path":631},"Project admin or a full-access secret key","PUT",[627,637],{"auth":634,"method":638,"path":631},"PATCH",[342,640,641,643,644,412,647,588,650,653,654,656,657,588,659,661,662,664,665,667,668,671,672,675,676,679,680,608,683,686,687,412,690,422,692,694],{},[455,642,630],{}," returns ",[455,645,646],{},"language",[455,648,649],{},"fields",[455,651,652],{},"unmapped",". ",[455,655,635],{}," takes ",[455,658,646],{},[455,660,649],{}," and replaces the whole mapping, so send every field you want to keep. A field left out is removed. ",[455,663,638],{}," takes only ",[455,666,649],{}," and changes just the fields it names: a definition adds or replaces that field, ",[455,669,670],{},"null"," removes it, and every other field and the language stay as they are. Send each named field's whole definition, because a flag left out takes its default. Both answers hold the saved ",[455,673,674],{},"mapping",", the updated ",[455,677,678],{},"index"," and a ",[455,681,682],{},"diff",[455,684,685],{},"kind"," (",[455,688,689],{},"none",[455,691,503],{},[455,693,506],{},") and one entry per change.",[696,697,702],"pre",{"className":698,"code":699,"language":700,"meta":701,"style":701},"language-json shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","{\n  \"language\": \"english\",\n  \"fields\": {\n    \"id\": { \"type\": \"keyword\", \"filterable\": true, \"sortable\": true },\n    \"title\": { \"type\": \"text\", \"searchable\": true, \"sortable\": true },\n    \"brand\": { \"type\": \"keyword\", \"searchable\": true, \"filterable\": true, \"facetable\": true },\n    \"price\": { \"type\": \"float\", \"filterable\": true, \"facetable\": true, \"sortable\": true },\n    \"categories\": { \"type\": \"hierarchy\", \"filterable\": true, \"facetable\": true },\n    \"attributes.color\": { \"type\": \"keyword\", \"filterable\": true, \"facetable\": true }\n  }\n}\n","json","",[455,703,704,713,729,738,778,812,853,894,927,960,966],{"__ignoreMap":701},[705,706,709],"span",{"class":707,"line":708},"line",1,[705,710,712],{"class":711},"s7iLA","{\n",[705,714,716,720,722,726],{"class":707,"line":715},2,[705,717,719],{"class":718},"sb7M8","  \"language\"",[705,721,408],{"class":711},[705,723,725],{"class":724},"semJd","\"english\"",[705,727,728],{"class":711},",\n",[705,730,732,735],{"class":707,"line":731},3,[705,733,734],{"class":718},"  \"fields\"",[705,736,737],{"class":711},": {\n",[705,739,741,744,747,750,752,755,757,760,762,766,768,771,773,775],{"class":707,"line":740},4,[705,742,743],{"class":718},"    \"id\"",[705,745,746],{"class":711},": { ",[705,748,749],{"class":718},"\"type\"",[705,751,408],{"class":711},[705,753,754],{"class":724},"\"keyword\"",[705,756,412],{"class":711},[705,758,759],{"class":718},"\"filterable\"",[705,761,408],{"class":711},[705,763,765],{"class":764},"ssYy9","true",[705,767,412],{"class":711},[705,769,770],{"class":718},"\"sortable\"",[705,772,408],{"class":711},[705,774,765],{"class":764},[705,776,777],{"class":711}," },\n",[705,779,781,784,786,788,790,793,795,798,800,802,804,806,808,810],{"class":707,"line":780},5,[705,782,783],{"class":718},"    \"title\"",[705,785,746],{"class":711},[705,787,749],{"class":718},[705,789,408],{"class":711},[705,791,792],{"class":724},"\"text\"",[705,794,412],{"class":711},[705,796,797],{"class":718},"\"searchable\"",[705,799,408],{"class":711},[705,801,765],{"class":764},[705,803,412],{"class":711},[705,805,770],{"class":718},[705,807,408],{"class":711},[705,809,765],{"class":764},[705,811,777],{"class":711},[705,813,815,818,820,822,824,826,828,830,832,834,836,838,840,842,844,847,849,851],{"class":707,"line":814},6,[705,816,817],{"class":718},"    \"brand\"",[705,819,746],{"class":711},[705,821,749],{"class":718},[705,823,408],{"class":711},[705,825,754],{"class":724},[705,827,412],{"class":711},[705,829,797],{"class":718},[705,831,408],{"class":711},[705,833,765],{"class":764},[705,835,412],{"class":711},[705,837,759],{"class":718},[705,839,408],{"class":711},[705,841,765],{"class":764},[705,843,412],{"class":711},[705,845,846],{"class":718},"\"facetable\"",[705,848,408],{"class":711},[705,850,765],{"class":764},[705,852,777],{"class":711},[705,854,856,859,861,863,865,868,870,872,874,876,878,880,882,884,886,888,890,892],{"class":707,"line":855},7,[705,857,858],{"class":718},"    \"price\"",[705,860,746],{"class":711},[705,862,749],{"class":718},[705,864,408],{"class":711},[705,866,867],{"class":724},"\"float\"",[705,869,412],{"class":711},[705,871,759],{"class":718},[705,873,408],{"class":711},[705,875,765],{"class":764},[705,877,412],{"class":711},[705,879,846],{"class":718},[705,881,408],{"class":711},[705,883,765],{"class":764},[705,885,412],{"class":711},[705,887,770],{"class":718},[705,889,408],{"class":711},[705,891,765],{"class":764},[705,893,777],{"class":711},[705,895,897,900,902,904,906,909,911,913,915,917,919,921,923,925],{"class":707,"line":896},8,[705,898,899],{"class":718},"    \"categories\"",[705,901,746],{"class":711},[705,903,749],{"class":718},[705,905,408],{"class":711},[705,907,908],{"class":724},"\"hierarchy\"",[705,910,412],{"class":711},[705,912,759],{"class":718},[705,914,408],{"class":711},[705,916,765],{"class":764},[705,918,412],{"class":711},[705,920,846],{"class":718},[705,922,408],{"class":711},[705,924,765],{"class":764},[705,926,777],{"class":711},[705,928,930,933,935,937,939,941,943,945,947,949,951,953,955,957],{"class":707,"line":929},9,[705,931,932],{"class":718},"    \"attributes.color\"",[705,934,746],{"class":711},[705,936,749],{"class":718},[705,938,408],{"class":711},[705,940,754],{"class":724},[705,942,412],{"class":711},[705,944,759],{"class":718},[705,946,408],{"class":711},[705,948,765],{"class":764},[705,950,412],{"class":711},[705,952,846],{"class":718},[705,954,408],{"class":711},[705,956,765],{"class":764},[705,958,959],{"class":711}," }\n",[705,961,963],{"class":707,"line":962},10,[705,964,965],{"class":711},"  }\n",[705,967,969],{"class":707,"line":968},11,[705,970,971],{"class":711},"}\n",[342,973,974,975,978,979,412,982,588,985,988],{},"A flag left out takes its default: ",[455,976,977],{},"returnable"," is on, the other four are off. Over MCP, ",[455,980,981],{},"get_mapping",[455,983,984],{},"update_mapping",[455,986,987],{},"update_fields"," do the same.",[337,990,992],{"id":991},"field-types","Field types",[342,994,995,996,998],{},"A field holds one value or an array of values of its type. ",[455,997,670],{}," is allowed.",[1000,1001,1002,1017],"table",{},[1003,1004,1005],"thead",{},[1006,1007,1008,1011,1014],"tr",{},[1009,1010,403],"th",{},[1009,1012,1013],{},"Values",[1009,1015,1016],{},"Use it for",[1018,1019,1020,1034,1047,1060,1073,1086,1100,1117,1138],"tbody",{},[1006,1021,1022,1028,1031],{},[1023,1024,1025],"td",{},[455,1026,1027],{},"keyword",[1023,1029,1030],{},"A string, matched as a whole",[1023,1032,1033],{},"Brands, SKUs, colours, sizes, URLs",[1006,1035,1036,1041,1044],{},[1023,1037,1038],{},[455,1039,1040],{},"text",[1023,1042,1043],{},"A string, split into words",[1023,1045,1046],{},"Titles and descriptions",[1006,1048,1049,1054,1057],{},[1023,1050,1051],{},[455,1052,1053],{},"integer",[1023,1055,1056],{},"A whole number from -2147483648 to 2147483647",[1023,1058,1059],{},"Stock levels, ratings",[1006,1061,1062,1067,1070],{},[1023,1063,1064],{},[455,1065,1066],{},"long",[1023,1068,1069],{},"A whole number",[1023,1071,1072],{},"Large counters and ids",[1006,1074,1075,1080,1083],{},[1023,1076,1077],{},[455,1078,1079],{},"float",[1023,1081,1082],{},"A number",[1023,1084,1085],{},"Prices, weights",[1006,1087,1088,1093,1095],{},[1023,1089,1090],{},[455,1091,1092],{},"double",[1023,1094,1082],{},[1023,1096,1097,1098],{},"Same as ",[455,1099,1079],{},[1006,1101,1102,1107,1114],{},[1023,1103,1104],{},[455,1105,1106],{},"boolean",[1023,1108,1109,422,1111],{},[455,1110,765],{},[455,1112,1113],{},"false",[1023,1115,1116],{},"In stock, on sale",[1006,1118,1119,1124,1135],{},[1023,1120,1121],{},[455,1122,1123],{},"date",[1023,1125,1126,1127,1130,1131,1134],{},"An ISO 8601 date (",[455,1128,1129],{},"2026-10-16",") or date and time with an offset (",[455,1132,1133],{},"2026-10-16T09:30:00Z",")",[1023,1136,1137],{},"Release dates",[1006,1139,1140,1145,1151],{},[1023,1141,1142],{},[455,1143,1144],{},"hierarchy",[1023,1146,1147,1148],{},"A category path such as ",[455,1149,1150],{},"\"Packaging > Boxes > Cardboard boxes\"",[1023,1152,1153],{},"Category trees",[342,1155,1156,1157,1159,1160,412,1162,588,1164,1166],{},"A document whose value does not fit the field's type is rejected when you upload it. A ",[455,1158,1144],{}," field may hold several paths, one per category the product is in. Only ",[455,1161,1040],{},[455,1163,1027],{},[455,1165,1144],{}," fields can be searchable.",[337,1168,1170],{"id":1169},"flags","Flags",[342,1172,1173,1174,1176,1177,1179],{},"The cabinet lists them under ",[373,1175,407],{}," when you click ",[373,1178,399],{}," on a field, with the same labels.",[1181,1182,1185,1187,1190,1201],"setting",{"default":1113,"name":1183,"type":1106,"values":1184},"searchable","text, keyword and hierarchy fields",[390,1186,411],{"id":1183},[342,1188,1189],{},"Search queries match the words in it. A profile can only list searchable fields in its search fields.",[1191,1192,1193],"template",{"v-slot:tips":701},[572,1194,1195,1198],{},[575,1196,1197],{},"Make titles, brands and SKUs searchable. Leave prices, URLs and internal ids off: their values only add noise to matching.",[575,1199,1200],{},"Turning it on for a field that already holds data is a breaking change. Turning it off is additive.",[1191,1202,1203],{"v-slot:related":701},[572,1204,1205,1209],{},[575,1206,1207],{},[349,1208,433],{"href":432},[575,1210,1211],{},[349,1212,1214],{"href":1213},"\u002Fdocs\u002Fsearch\u002Fprofiles#fields-and-weights","Search fields",[1181,1216,1218,1220,1233],{"default":1113,"name":1217,"type":1106},"filterable",[390,1219,415],{"id":1217},[342,1221,1222,1223,1226,1227,422,1230,1232],{},"Results can be narrowed to its values, for example ",[455,1224,1225],{},"color"," is ",[455,1228,1229],{},"Brown",[455,1231,607],{}," is between 1 and 5.",[1191,1234,1235],{"v-slot:tips":701},[572,1236,1237,1246],{},[575,1238,1239,1240,1242,1243,1245],{},"A ",[455,1241,1040],{}," field filters on its whole value, and only on values up to 256 characters. Filter on a ",[455,1244,1027],{}," field instead.",[575,1247,1248],{},"Turning it on is additive when the field is already facetable or sortable, and breaking when none of the three was on.",[1181,1250,1252,1254,1257,1267],{"default":1113,"name":1251,"type":1106},"facetable",[390,1253,418],{"id":1251},[342,1255,1256],{},"Shows as a filter panel with counts next to the results. Facets themselves are set on the index or in a profile; this flag allows the field to be used there.",[1191,1258,1259],{"v-slot:tips":701},[572,1260,1261,1264],{},[575,1262,1263],{},"Facet on fields with a short list of values: brand, colour, size, category. A facet on titles or ids lists thousands of values nobody picks.",[575,1265,1266],{},"Like filterable, turning it on is additive only when the field is already filterable or sortable.",[1191,1268,1269],{"v-slot:related":701},[572,1270,1271],{},[575,1272,1273],{},[349,1274,1276],{"href":1275},"\u002Fdocs\u002Fsearch\u002Fprofiles#profile-facets","Profile facets",[1181,1278,1280,1282,1289],{"default":1113,"name":1279,"type":1106},"sortable",[390,1281,421],{"id":1279},[342,1283,1284,1285,1288],{},"Results can be ordered by it, for example ",[455,1286,1287],{},"price:asc"," in a profile's sort options.",[1191,1290,1291],{"v-slot:tips":701},[572,1292,1293,1299],{},[575,1294,1295,1296,1298],{},"Sort by numbers and dates. Sorting by a ",[455,1297,1040],{}," field uses its whole value, which is rarely what shoppers expect.",[575,1300,1301],{},"Like filterable, turning it on is additive only when the field is already filterable or facetable.",[1181,1303,1304,1306,1309],{"default":765,"name":977,"type":1106},[390,1305,425],{"id":977},[342,1307,1308],{},"Sent back with each result. A profile can narrow the returned fields further, but only to returnable ones.",[1191,1310,1311],{"v-slot:tips":701},[572,1312,1313,1316],{},[575,1314,1315],{},"Turn it off for data the storefront does not show, such as purchase prices or internal notes. Fewer fields also make responses smaller.",[575,1317,1318],{},"Turning it on or off is always additive.",[337,1320,433],{"id":1321},"text-analysis",[342,1323,1324,1325,1327,1328,1330,1331,1334],{},"A searchable field has four more options. The cabinet shows them under ",[373,1326,433],{}," in the field editor once ",[373,1329,411],{}," is on. In the API they go in the field's ",[455,1332,1333],{},"analysis"," object. An option left out takes its default.",[342,1336,1337],{},"Every analysis option changes how stored text is split into words, so changing one on an existing field is breaking and needs a reindex.",[1181,1339,1341,1345,1348],{"default":765,"name":1340,"type":1106},"analysis.splitNumbers",[390,1342,1344],{"id":1343},"split-numbers","Split numbers",[342,1346,1347],{},"Also index the letter and digit parts of words like 600x400mm or HP12K, so \"600\" or \"12\" find them.",[1191,1349,1350],{"v-slot:tips":701},[572,1351,1352,1355],{},[575,1353,1354],{},"Keep it on for catalogs with sizes and model numbers in titles.",[575,1356,1357],{},"Turn it off for a field of codes where \"12\" finding every code that contains 12 is noise.",[1181,1359,1361,1365,1368],{"default":1113,"name":1360,"type":1106},"analysis.normalizeCodes",[390,1362,1364],{"id":1363},"codes","Codes",[342,1366,1367],{},"Match codes however they are typed: \"hp12k ne\", \"HP-12K\u002FNE\" and \"hp12kne\" all find HP12K\u002FNE.",[1191,1369,1370],{"v-slot:tips":701},[572,1371,1372],{},[575,1373,1374],{},"Turn it on for SKU, part number and model fields. Leave it off for titles and descriptions.",[1181,1376,1378,1382,1385,1392],{"default":1113,"name":1377,"type":1106},"analysis.wordPairs",[390,1379,1381],{"id":1380},"word-pairs","Word pairs",[342,1383,1384],{},"Rank documents higher when two query words appear next to each other, as in \"carton box\".",[1191,1386,1387],{"v-slot:tips":701},[572,1388,1389],{},[575,1390,1391],{},"Use it on titles in catalogs where two-word product names matter. It makes the index larger, so leave it off on long descriptions.",[1191,1393,1394],{"v-slot:related":701},[572,1395,1396],{},[575,1397,1398],{},[349,1399,1401],{"href":1400},"\u002Fdocs\u002Fsearch\u002Fprofiles#phrase-boost","Phrase boost",[1181,1403,1407,1410,1418],{"default":1404,"name":1405,"type":1406},"the index language","analysis.language","language code",[390,1408,1409],{"id":646},"Language",[342,1411,1412,1413,1417],{},"Stemming and stop words for this field when they differ from the index language. Every ",[349,1414,1416],{"href":1415},"\u002Fdocs\u002Findexing\u002Findices#languages","index language"," can be picked.",[1191,1419,1420],{"v-slot:tips":701},[572,1421,1422,1425],{},[575,1423,1424],{},"Use it for a field written in another language than the rest, for example English product names in a Finnish catalog.",[575,1426,1427],{},"A field without its own language follows the index language, also when that changes.",[337,1429,1431],{"id":1430},"field-names","Field names",[572,1433,1434,1447,1462,1467,1479,1488],{},[575,1435,1436,1437,1440,1441,412,1444,353],{},"A name starts with a letter and holds letters, digits and ",[455,1438,1439],{},"_",", up to 64 characters: ",[455,1442,1443],{},"brand",[455,1445,1446],{},"price_eur",[575,1448,1449,1450,1452,1453,1455,1456,1458,1459,1461],{},"Put product attributes under ",[455,1451,555],{},": the mapping field ",[455,1454,457],{}," reads ",[455,1457,1225],{}," from the document's ",[455,1460,555],{}," object. Only one level is allowed.",[575,1463,1464,1466],{},[455,1465,555],{}," itself is reserved and cannot be mapped.",[575,1468,1469,1470,1473,1474,1478],{},"Names that start with ",[455,1471,1472],{},"zs_alt."," belong to ",[349,1475,1477],{"href":1476},"#language-group-fields","language groups",". You cannot add or remove them.",[575,1480,1481,1482,1484,1485,1487],{},"Every mapping has an ",[455,1483,481],{}," field of type ",[455,1486,1027],{},". You cannot remove it or change its type.",[575,1489,1490],{},"A mapping holds at most 500 fields.",[342,1492,1493],{},"Other nested objects in a document are stored but never mapped.",[337,1495,1497],{"id":1496},"inferred-mapping","Inferred mapping",[342,1499,1500,1501,1503],{},"An index created without ",[455,1502,649],{}," maps its fields from the first upload. Each field gets a type and flags from its values:",[1000,1505,1506,1515],{},[1003,1507,1508],{},[1006,1509,1510,1512],{},[1009,1511,1013],{},[1009,1513,1514],{},"Becomes",[1018,1516,1517,1530,1540,1549,1559,1578,1588],{},[1006,1518,1519,1525],{},[1023,1520,1521,422,1523],{},[455,1522,765],{},[455,1524,1113],{},[1023,1526,1527,1529],{},[455,1528,1106],{},", filterable and facetable",[1006,1531,1532,1535],{},[1023,1533,1534],{},"Numbers",[1023,1536,1537,1539],{},[455,1538,1079],{},", filterable and sortable",[1006,1541,1542,1545],{},[1023,1543,1544],{},"ISO 8601 dates",[1023,1546,1547,1539],{},[455,1548,1123],{},[1006,1550,1551,1554],{},[1023,1552,1553],{},"Strings longer than 64 characters or with more than three words",[1023,1555,1556,1558],{},[455,1557,1040],{},", searchable",[1006,1560,1561,1573],{},[1023,1562,1563,1564,412,1567,422,1570],{},"Links starting with ",[455,1565,1566],{},"http:\u002F\u002F",[455,1568,1569],{},"https:\u002F\u002F",[455,1571,1572],{},"\u002F",[1023,1574,1575,1577],{},[455,1576,1027],{},", returnable only",[1006,1579,1580,1583],{},[1023,1581,1582],{},"Other strings",[1023,1584,1585,1587],{},[455,1586,1027],{},", searchable, filterable and facetable",[1006,1589,1590,1593],{},[1023,1591,1592],{},"Mixed types",[1023,1594,1595],{},"Not mapped",[342,1597,1598,1599,412,1602,412,1605,412,1608,412,1611,412,1614,412,1616,412,1619,412,1621,1624,1625,1627,1628,588,1631,353],{},"Common product fields keep fixed flags when their values fit: ",[455,1600,1601],{},"title",[455,1603,1604],{},"shortDescription",[455,1606,1607],{},"description",[455,1609,1610],{},"url",[455,1612,1613],{},"imageUrl",[455,1615,607],{},[455,1617,1618],{},"currency",[455,1620,1443],{},[455,1622,1623],{},"categories"," (as ",[455,1626,1144],{},"), ",[455,1629,1630],{},"sku",[455,1632,1633],{},"inStock",[342,1635,1636],{},"Inference runs once. Fields that later uploads bring are not mapped automatically. They appear under unmapped fields.",[1638,1639,1640],"tip",{},[342,1641,1642,1643,1645,1646,1649],{},"Review the inferred mapping before you build profiles. Inference cannot tell that ",[455,1644,1225],{}," should be a facet but ",[455,1647,1648],{},"ean"," should not.",[337,1651,1653],{"id":1652},"unmapped-fields","Unmapped fields",[342,1655,1656,1658,1659,1661,1662,1665,1666,1669,1670,1672,1673,1676],{},[455,1657,630],{}," mapping lists in ",[455,1660,652],{}," every field your documents carry that the mapping lacks, with a ",[455,1663,1664],{},"sample"," value, the ",[455,1667,1668],{},"suggested"," definition inference would give it (",[455,1671,670],{}," when its values mix types) and ",[455,1674,1675],{},"firstSeenAt",". Up to 1000 field names are recorded per index.",[342,1678,1679,1680,1682,1683,1685,1686,1688,1689,1691,1692,353],{},"In the cabinet they appear under ",[373,1681,473],{}," on ",[373,1684,375],{},", each with a sample value. ",[373,1687,469],{}," puts the field into the draft with the suggested definition. Click ",[373,1690,399],{}," on it if needed, then ",[373,1693,514],{},[342,1695,1696,1697,1700],{},"Documents already uploaded hold values for these fields, and a mapping update does not index stored values. Adding an unmapped field is therefore breaking: save it, then ",[349,1698,1699],{"href":122},"reindex"," so search covers every document.",[337,1702,1704],{"id":1703},"additive-and-breaking-changes","Additive and breaking changes",[342,1706,1707],{},"A save compares the new mapping with the live version.",[572,1709,1710,1719],{},[575,1711,1712,1715,1716,353],{},[373,1713,1714],{},"Additive"," changes apply at once, and the index stays ",[455,1717,1718],{},"READY",[575,1720,1721,1724,1725,1728,1729,1731],{},[373,1722,1723],{},"Breaking"," changes are saved, but the live version keeps the previous mapping. The index moves to ",[455,1726,1727],{},"NEEDS_REINDEX"," until a ",[349,1730,1699],{"href":122}," builds a version with the new mapping.",[1000,1733,1734,1744],{},[1003,1735,1736],{},[1006,1737,1738,1741],{},[1009,1739,1740],{},"Change",[1009,1742,1743],{},"Kind",[1018,1745,1746,1753,1760,1767,1774,1781,1790,1798,1811,1824,1831],{},[1006,1747,1748,1751],{},[1023,1749,1750],{},"Add a field no document carries yet",[1023,1752,1714],{},[1006,1754,1755,1758],{},[1023,1756,1757],{},"Add a field documents already carry",[1023,1759,1723],{},[1006,1761,1762,1765],{},[1023,1763,1764],{},"Remove a field",[1023,1766,1723],{},[1006,1768,1769,1772],{},[1023,1770,1771],{},"Change a field's type",[1023,1773,1723],{},[1006,1775,1776,1779],{},[1023,1777,1778],{},"Any flag off",[1023,1780,1714],{},[1006,1782,1783,1788],{},[1023,1784,1785,1787],{},[455,1786,977],{}," on",[1023,1789,1714],{},[1006,1791,1792,1796],{},[1023,1793,1794,1787],{},[455,1795,1183],{},[1023,1797,1723],{},[1006,1799,1800,1809],{},[1023,1801,1802,412,1804,422,1806,1808],{},[455,1803,1217],{},[455,1805,1251],{},[455,1807,1279],{}," on, when one of the three is already on",[1023,1810,1714],{},[1006,1812,1813,1822],{},[1023,1814,1815,412,1817,422,1819,1821],{},[455,1816,1217],{},[455,1818,1251],{},[455,1820,1279],{}," on, when none of the three is on",[1023,1823,1723],{},[1006,1825,1826,1829],{},[1023,1827,1828],{},"Any text analysis option",[1023,1830,1723],{},[1006,1832,1833,1836],{},[1023,1834,1835],{},"The index language",[1023,1837,1723],{},[342,1839,1840,1841,1844],{},"Search, filters and profiles keep working on the live version while the index waits for a reindex. While a version is being built, a breaking save answers ",[455,1842,1843],{},"409 VERSION_BUILDING",". Additive saves still work.",[337,1846,519],{"id":1847},"fields-in-use",[342,1849,1850,1851,1853,1854,1856],{},"A mapping change may not break the search configuration that uses it. Remove a field from the profiles, rules and facets that use it first, then remove it from the mapping. The same holds for a type change or a flag turned off: a profile that filters on ",[455,1852,607],{}," with a range needs ",[455,1855,607],{}," to stay numeric and filterable.",[342,1858,1859,1860,1863],{},"A save is refused with ",[455,1861,1862],{},"409 MAPPING_BREAKS_CONFIG"," when it would make any of these invalid:",[572,1865,1866,1873,1879,1885,1891],{},[575,1867,1868,1869,1872],{},"a ",[349,1870,1871],{"href":213},"search profile",": its query fields, facets, sort options, filters, filter fields or returned fields",[575,1874,1868,1875,1878],{},[349,1876,1877],{"href":231},"ranking rule",": its condition filters, boost and filter actions, or field weights",[575,1880,1881,1882],{},"the ",[349,1883,1884],{"href":219},"index facets",[575,1886,1881,1887,1890],{},[349,1888,1889],{"href":249},"autocomplete"," value fields",[575,1892,1881,1893,1896],{},[349,1894,1895],{"href":128},"data source"," field mapping",[342,1898,1899,1902],{},[455,1900,1901],{},"details"," lists every use, so you know what to change:",[696,1904,1906],{"className":698,"code":1905,"language":700,"meta":701,"style":701},"{\n  \"error\": {\n    \"code\": \"MAPPING_BREAKS_CONFIG\",\n    \"message\": \"This mapping change would break search configuration that uses \\\"brand\\\". Remove or change those uses in the profiles, rules, facets, autocomplete or data source listed in details first.\",\n    \"details\": [\n      { \"kind\": \"facets\", \"id\": null, \"name\": \"Index facets\", \"path\": \"facets.0.field\", \"field\": \"brand\", \"message\": \"\\\"brand\\\" is not a mapped field\" }\n    ]\n  }\n}\n",[455,1907,1908,1912,1919,1931,1954,1962,2035,2040,2044],{"__ignoreMap":701},[705,1909,1910],{"class":707,"line":708},[705,1911,712],{"class":711},[705,1913,1914,1917],{"class":707,"line":715},[705,1915,1916],{"class":718},"  \"error\"",[705,1918,737],{"class":711},[705,1920,1921,1924,1926,1929],{"class":707,"line":731},[705,1922,1923],{"class":718},"    \"code\"",[705,1925,408],{"class":711},[705,1927,1928],{"class":724},"\"MAPPING_BREAKS_CONFIG\"",[705,1930,728],{"class":711},[705,1932,1933,1936,1938,1941,1945,1947,1949,1952],{"class":707,"line":740},[705,1934,1935],{"class":718},"    \"message\"",[705,1937,408],{"class":711},[705,1939,1940],{"class":724},"\"This mapping change would break search configuration that uses ",[705,1942,1944],{"class":1943},"sklAV","\\\"",[705,1946,1443],{"class":724},[705,1948,1944],{"class":1943},[705,1950,1951],{"class":724},". Remove or change those uses in the profiles, rules, facets, autocomplete or data source listed in details first.\"",[705,1953,728],{"class":711},[705,1955,1956,1959],{"class":707,"line":780},[705,1957,1958],{"class":718},"    \"details\"",[705,1960,1961],{"class":711},": [\n",[705,1963,1964,1967,1970,1972,1975,1977,1980,1982,1984,1986,1989,1991,1994,1996,1999,2001,2004,2006,2009,2011,2014,2016,2019,2021,2024,2026,2028,2030,2033],{"class":707,"line":814},[705,1965,1966],{"class":711},"      { ",[705,1968,1969],{"class":718},"\"kind\"",[705,1971,408],{"class":711},[705,1973,1974],{"class":724},"\"facets\"",[705,1976,412],{"class":711},[705,1978,1979],{"class":718},"\"id\"",[705,1981,408],{"class":711},[705,1983,670],{"class":764},[705,1985,412],{"class":711},[705,1987,1988],{"class":718},"\"name\"",[705,1990,408],{"class":711},[705,1992,1993],{"class":724},"\"Index facets\"",[705,1995,412],{"class":711},[705,1997,1998],{"class":718},"\"path\"",[705,2000,408],{"class":711},[705,2002,2003],{"class":724},"\"facets.0.field\"",[705,2005,412],{"class":711},[705,2007,2008],{"class":718},"\"field\"",[705,2010,408],{"class":711},[705,2012,2013],{"class":724},"\"brand\"",[705,2015,412],{"class":711},[705,2017,2018],{"class":718},"\"message\"",[705,2020,408],{"class":711},[705,2022,2023],{"class":724},"\"",[705,2025,1944],{"class":1943},[705,2027,1443],{"class":724},[705,2029,1944],{"class":1943},[705,2031,2032],{"class":724}," is not a mapped field\"",[705,2034,959],{"class":711},[705,2036,2037],{"class":707,"line":855},[705,2038,2039],{"class":711},"    ]\n",[705,2041,2042],{"class":707,"line":896},[705,2043,965],{"class":711},[705,2045,2046],{"class":707,"line":929},[705,2047,971],{"class":711},[342,2049,2050,1226,2052,412,2055,412,2058,412,2061,422,2064,653,2067,2069,2070,2072,2073,2076],{},[455,2051,685],{},[455,2053,2054],{},"profile",[455,2056,2057],{},"rule",[455,2059,2060],{},"facets",[455,2062,2063],{},"suggest",[455,2065,2066],{},"feed",[455,2068,481],{}," is the profile or rule id, and ",[455,2071,670],{}," for the others. ",[455,2074,2075],{},"path"," points into that configuration. A use that was already invalid before the change does not block it.",[627,2078],{"auth":629,"method":630,"path":2079},"\u002Fv1\u002Fprojects\u002F:projectId\u002Findices\u002F:indexId\u002Fmapping\u002Fusage",[342,2081,2082,2083,412,2086,2089,2090,1627,2093,412,2095,588,2098,2101,2102,2104],{},"Returns what the guard checks: ",[455,2084,2085],{},"profiles",[455,2087,2088],{},"rules"," (each ",[455,2091,2092],{},"{ id, rule }",[455,2094,2060],{},[455,2096,2097],{},"suggestFields",[455,2099,2100],{},"feedFields",". The cabinet uses it to show the same issues in the ",[373,2103,499],{}," panel before you save, with a link to each profile, rule or page that uses the field.",[337,2106,133],{"id":2107},"integrations",[342,2109,2110,2111,2114,2115,2117,2118,422,2120,2123,2124,2127,2128,2130,2131,353],{},"A shop platform plugin can seed the mapping for you. While the plugin's ",[373,2112,2113],{},"Add new attributes to the Zaproo mapping"," setting is on, the plugin adds each new shop attribute as a field. Once a field is saved, Zaproo owns it: a later sync from the plugin adds only fields the mapping lacks, and never changes or removes a saved field or the index language. In ",[373,2116,375],{}," you can change any field and add new ones, but you can't remove a field. A ",[455,2119,635],{},[455,2121,2122],{},"PATCH ...\u002Fmapping"," from anyone but the plugin's key that removes a field answers ",[455,2125,2126],{},"409 MAPPING_MANAGED_BY_INTEGRATION","; exclude the attribute in the plugin, or turn the setting off there, to remove it. A breaking change still marks the index ",[373,2129,533],{},", and the plugin rebuilds the index on its next sync. See ",[349,2132,133],{"href":2133},"\u002Fdocs\u002Findexing\u002Fdata-source#integrations",[337,2135,2137],{"id":2136},"language-group-fields","Language group fields",[342,2139,2140,2141,2144,2145,2148,2149,2152],{},"An index in a ",[349,2142,2143],{"href":237},"language group"," holds the text the other members lend it. Each copy is a mapping field named ",[455,2146,2147],{},"zs_alt.\u003Csource language>.\u003Cfield>",", for example ",[455,2150,2151],{},"zs_alt.english.title",". The group adds and removes these fields when you save it. The cabinet lists them in a section of their own.",[342,2154,2155,2156,2158,2159,2161,2162,412,2164,588,2166,2168,2169,353],{},"A borrowed field is always ",[455,2157,1040],{}," and analyzed in the language it came from. It is always searchable, and filterable, facetable and sortable stay off. It starts not returnable. Turning ",[373,2160,425],{}," on is additive, and then a profile's returned fields can include it. You may change ",[373,2163,1344],{},[373,2165,1364],{},[373,2167,1381],{},", which are breaking changes as on any other field. A search profile only searches a borrowed field once it lists it under ",[349,2170,2171],{"href":1213},"Fields and weights",[342,2173,1239,2174,422,2176,2178,2179,2181,2182,2185,2186,2189],{},[455,2175,635],{},[455,2177,2122],{}," that adds a ",[455,2180,1472],{}," field answers ",[455,2183,2184],{},"400 MAPPING_FIELD_RESERVED",". One that leaves out or removes a field the group lends answers ",[455,2187,2188],{},"409 MAPPING_MANAGED_BY_LANGUAGE_GROUP",". Change the group's shared fields instead. Removing a borrowed field through the group is additive: the next sync strips its text from the documents.",[337,2191,2193],{"id":2192},"errors","Errors",[1000,2195,2196,2206],{},[1003,2197,2198],{},[1006,2199,2200,2203],{},[1009,2201,2202],{},"Code",[1009,2204,2205],{},"When",[1018,2207,2208,2231,2240,2254,2265,2279,2290],{},[1006,2209,2210,2215],{},[1023,2211,2212],{},[455,2213,2214],{},"400 VALIDATION_FAILED",[1023,2216,2217,2219,2220,2222,2223,412,2225,2227,2228,2230],{},[455,2218,638],{}," names no field, a field name is invalid, ",[455,2221,481],{}," is missing or not ",[455,2224,1027],{},[455,2226,555],{}," is mapped, there are more than 500 fields, or a flag or option does not fit the type. ",[455,2229,1901],{}," names each field.",[1006,2232,2233,2237],{},[1023,2234,2235],{},[455,2236,1843],{},[1023,2238,2239],{},"A breaking save while a reindex or replace session is running.",[1006,2241,2242,2246],{},[1023,2243,2244],{},[455,2245,1862],{},[1023,2247,2248,2249,2251,2252,353],{},"The change would break a profile, rule, facet, autocomplete field or data source. ",[455,2250,1901],{}," lists each use. See ",[349,2253,519],{"href":518},[1006,2255,2256,2260],{},[1023,2257,2258],{},[455,2259,2126],{},[1023,2261,2262,2263,353],{},"A shop platform plugin manages the mapping, and the change removes a field. See ",[349,2264,133],{"href":488},[1006,2266,2267,2271],{},[1023,2268,2269],{},[455,2270,2184],{},[1023,2272,2273,2274,2276,2277,353],{},"The change adds a ",[455,2275,1472],{}," field. Only a language group adds those. See ",[349,2278,2137],{"href":1476},[1006,2280,2281,2285],{},[1023,2282,2283],{},[455,2284,2188],{},[1023,2286,2287,2288,353],{},"The change removes a field a language group lends the index. See ",[349,2289,2137],{"href":1476},[1006,2291,2292,2297],{},[1023,2293,2294],{},[455,2295,2296],{},"400 LANGUAGE_UNAVAILABLE",[1023,2298,2299],{},"A field or the index uses a language the cluster cannot analyse.",[337,2301,2303],{"id":2302},"related","Related",[572,2305,2306,2310,2314,2318,2322,2327],{},[575,2307,2308],{},[349,2309,98],{"href":99},[575,2311,2312],{},[349,2313,109],{"href":110},[575,2315,2316],{},[349,2317,121],{"href":122},[575,2319,2320],{},[349,2321,212],{"href":213},[575,2323,2324],{},[349,2325,127],{"href":2326},"\u002Fdocs\u002Findexing\u002Fdata-source#map-the-fields",[575,2328,2329],{},[349,2330,23],{"href":24},[2332,2333,2334],"style",{},"html pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}html pre.shiki code .sb7M8, html code.shiki .sb7M8{--shiki-light:#024C1A;--shiki-default:#024C1A;--shiki-dark:#72F088}html pre.shiki code .semJd, html code.shiki .semJd{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF}html pre.shiki code .ssYy9, html code.shiki .ssYy9{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF}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 .sklAV, html code.shiki .sklAV{--shiki-light:#A0111F;--shiki-default:#A0111F;--shiki-dark:#FF9492}",{"title":701,"searchDepth":715,"depth":715,"links":2336},[2337,2338,2344,2345,2346,2353,2359,2360,2361,2362,2363,2364,2365,2366,2367],{"id":339,"depth":715,"text":340},{"id":367,"depth":715,"text":368,"children":2339},[2340,2341,2342,2343],{"id":392,"depth":731,"text":393},{"id":445,"depth":731,"text":446},{"id":492,"depth":731,"text":493},{"id":563,"depth":731,"text":564},{"id":624,"depth":715,"text":625},{"id":991,"depth":715,"text":992},{"id":1169,"depth":715,"text":1170,"children":2347},[2348,2349,2350,2351,2352],{"id":1183,"depth":731,"text":411},{"id":1217,"depth":731,"text":415},{"id":1251,"depth":731,"text":418},{"id":1279,"depth":731,"text":421},{"id":977,"depth":731,"text":425},{"id":1321,"depth":715,"text":433,"children":2354},[2355,2356,2357,2358],{"id":1343,"depth":731,"text":1344},{"id":1363,"depth":731,"text":1364},{"id":1380,"depth":731,"text":1381},{"id":646,"depth":731,"text":1409},{"id":1430,"depth":715,"text":1431},{"id":1496,"depth":715,"text":1497},{"id":1652,"depth":715,"text":1653},{"id":1703,"depth":715,"text":1704},{"id":1847,"depth":715,"text":519},{"id":2107,"depth":715,"text":133},{"id":2136,"depth":715,"text":2137},{"id":2192,"depth":715,"text":2193},{"id":2302,"depth":715,"text":2303},"md",{},{"icon":107},{"title":103,"description":106},"UywjBA6_IYrrGtA2SSM6WS1wsQeI_mgMBgC51e4j5bQ",[2374,2375],{"title":98,"path":99,"stem":100,"description":101,"icon":93,"children":-1},{"title":109,"path":110,"stem":111,"description":112,"icon":113,"children":-1},1793717706305]