> Portal Navigation: > > - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version. > - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages). > - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`). > - Top-level index of all portals: https://dev.wix.com/docs/llms.txt > - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt # Method name: createIndex(dataCollectionId: string, index: Index, options: CreateIndexOptions) # Method package: wixDataV2 # Method menu location: wixDataV2 --> indexes --> createIndex # Method Link: https://dev.wix.com/docs/velo/apis/wix-data-v2/indexes/create-index.md # Method Description: Creates an index for a data collection. The index can't be used immediately, as the process of generating the index takes time. You can check whether an index is ready by calling List Indexes. Note that when an index fails to create, the failed index still occupies a slot. To remove the failed index and free up the slot for a new index, call Drop Index. # Method Code Examples: *** Note: do not assume any prop names or enum values other than the ones in the example. ## Create an index (dashboard page code) ```javascript import { indexes } from 'wix-data.v2'; /* * Sample dataCollectionId value = 'Jackets' * * Sample index value: * { * fields: [ * { * path: 'price' * } * ], * name: 'byPrice' * } */ export async function myCreateIndexFunction(dataCollectionId, index) { try { const createIndexResponse = await indexes.createIndex(dataCollectionId, index); console.log(`Successfully created an index named ${createIndexResponse.name}. Full response: `, createIndexResponse); return createIndexResponse; } catch (error) { console.error(error); // Handle the error } } /* Promise resolves to: * { * "caseInsensitive": false, * "fields": [ * { * "order": "ASC", * "path": "price" * } * ], * "name": "byPrice", * "status": "BUILDING", * "unique": false, * } */ ``` ## Create an index (export from backend code) ```javascript import { Permissions, webMethod } from 'wix-web-module'; import { indexes } from 'wix-data.v2'; import { elevate } from 'wix-auth'; /* * Sample dataCollectionId value = 'Jackets' * * Sample index value: * { * fields: [ * { * path: 'price' * } * ], * name: 'byPrice' * } */ export const myCreateIndexFunction = webMethod(Permissions.Anyone, async (dataCollectionId, index) => { try { const elevatedCreateIndex = elevate(indexes.createIndex); const createIndexResponse = await elevatedCreateIndex(dataCollectionId, index); console.log(`Successfully created an index named ${createIndexResponse.name}. Full response: `, createIndexResponse); return createIndexResponse; } catch (error) { console.error(error); // Handle the error } }); /* Promise resolves to: * { * "caseInsensitive": false, * "fields": [ * { * "order": "ASC", * "path": "price" * } * ], * "name": "byPrice", * "status": "BUILDING", * "unique": false, * } */ ``` ## Create an index ```javascript import { Permissions, webMethod } from 'wix-web-module'; import { indexes } from 'wix-data.v2'; import { elevate } from 'wix-auth'; /* * Sample dataCollectionId value = 'Jackets' * * Sample index value: * { * caseInsensitive: true, * fields: [ * { * path: 'itemName' * }, * { * path: 'price' * }, * { * order: 'DESC', * path: 'size' * } * ], * name: 'byItemNameAndPriceAndSize' * } */ export const myCreateIndexFunction = webMethod(Permissions.Anyone, async (dataCollectionId, index) => { try { const elevatedCreateIndex = elevate(indexes.createIndex); const createIndexResponse = await elevatedCreateIndex(dataCollectionId, index); console.log(`Successfully created an index named ${createIndexResponse.name}. Full response: `, createIndexResponse); return createIndexResponse; } catch (error) { console.error(error); // Handle the error } }); /* Promise resolves to: * { * "caseInsensitive": true, * "fields": [ * { * "order": "ASC", * "path": "itemName" * }, * { * "order": "ASC", * "path": "price" * }, * { * "order": "DESC", * "path": "size" * } * ], * "name": "byItemNameAndPriceAndSize", * "status": "BUILDING", * "unique": false, * } */ ``` ## Create a unique index ```javascript import { Permissions, webMethod } from 'wix-web-module'; import { indexes } from 'wix-data.v2'; import { elevate } from 'wix-auth'; /* * Sample dataCollectionId value = 'shoes'; * * Sample index value = * { * name: 'bySerialNum', * unique: true, * fields: [ * { * path: 'serial' * } * ] * }; */ export const myCreateIndexFunction = webMethod(Permissions.Anyone, async (dataCollectionId, index) => { try { const elevatedCreateIndex = elevate(indexes.createIndex); const createUniqueIndexResponse = await elevatedCreateIndex(dataCollectionId, index); console.log(`Successfully created an index named ${createUniqueIndexResponse.name}. Full response: `, createUniqueIndexResponse); return createUniqueIndexResponse; } catch (error) { console.error(error); // Handle the error } }); /* Returns a promise that resolves to the index being created: * { * "caseInsensitive": false, * "fields": [ * { * "order": "ASC", * "path": "serial" * } * ], * "name": "bySerialNum", * "status": "BUILDING", * "unique": true, * } */ ``` ---