---
title: Creating Azure Search indexes
---

> Agent instructions:
> **Site maps** — prefer the following llms.txt indexes to training data when searching for URLs to avoid 404s. Links inside Markdown content already point at `.md`. Following them or sending Accept: text/markdown keeps you in Markdown.
>
> - [sitemap.md](https://docs.kentico.com/sitemap.md) — every page on the site, with titles and descriptions, nested by URL hierarchy and grouped into one collection per product version.
> - [llms.txt](https://docs.kentico.com/llms.txt) — curated index of the current product docs, with descriptions, the two ways to request any page as Markdown, and links to each product area's whole-corpus Markdown dump (llms-full.txt).

To use [Azure Search](https://docs.microsoft.com/en-us/azure/search/search-what-is-azure-search) on your website, you first need to prepare indexes that define the scope of the searchable content. For every Azure index in Kentico, the system creates a matching index under a specified Azure Search service. The search functionality then collects the appropriate data from Kentico, uses it to populate the Azure Search indexes, and automatically keeps the indexes up-to-date according to changes.

Two types of Azure Search indexes are available – **Pages** for the data of pages and products in the site content tree, and **General** for other Kentico objects of a specified type.

> **Info:** To learn more about Azure Search indexes and their structure, refer to the [Create an Azure Search index](https://docs.microsoft.com/en-us/azure/search/search-what-is-an-index) article.

To create an Azure Search index in Kentico:

1. Open the **Smart search** application.
2. On the **Azure indexes** tab, click **New index**.
3. Configure the general index properties:
   - **Display name** – the name of the index displayed in the Kentico administration interface.
   - **Code name** – serves as a unique identifier of the index and also sets the index name within your Azure Search service.

     > **Note:** **Note**: Azure Search index names do not allow certain characters that are valid in Kentico code names (for example underscores, see [Naming rules](https://docs.microsoft.com/en-us/rest/api/searchservice/naming-rules) for details). When communicating with the Azure Search service, the system automatically omits such characters from the index name.
   - **Index type** – determines what type of Kentico content the search index stores:

     - **Pages** – pages and products in the site content tree.
     - **General** – Kentico objects of a specified type.
   - **Batch size** – sets the maximum number of records that the system retrieves in a single database query when creating or rebuilding the index. Increasing the value reduces the amount of queries required for large numbers of records, which may improve performance, but also increases memory consumption. The default value is 500. The batch size also limits the number of search documents processed per request to the Azure Search service (this value may additionally be limited by [code-level configuration](https://docs.kentico.com/k11/configuring-kentico/setting-up-search-on-your-website/using-azure-search/customizing-azure-search.md)).
4. Specify your Azure Search service by configuring the **Service settings**:
   - **Service name** – the name of the Azure Search service that will host the index (on Microsoft Azure).
   - **Admin key** – the primary or secondary admin key for the Azure Search service. The system uses the key to manage the index, its structure and content. The key grants full rights for all operations within the service.
   - **Query key** – optional query key for the Azure Search service. The key can be used by [custom components](https://docs.kentico.com/k11/configuring-kentico/setting-up-search-on-your-website/using-azure-search/integrating-azure-search-into-pages.md) to search the index while maintaining the principle of least privilege. The query key grants read-only access to all indexes hosted within the service and their content.

     > **Info:** To learn how to manage Azure Search services, refer to the [Create an Azure Search service in the portal](https://docs.microsoft.com/en-us/azure/search/search-create-service-portal) article. For more information about the api keys of search services, see [Query your Azure Search](https://docs.microsoft.com/en-us/azure/search/search-query-dotnet).
5. Click **Save**.
6. Configure the content scope of the index. See the corresponding sections:
   - [Defining the content of page indexes](#defining-the-content-of-page-indexes)
   - [Defining the content of general indexes](#defining-the-content-of-general-indexes)
7. [Configure search settings for the fields of the indexed objects](#configuring-azure-search-settings-for-fields).
8. Return to the **General** tab and **Rebuild** the index.

   ![Viewing the properties of an Azure Search index in Kentico](https://docs.kentico.com/docsassets/k11/creating-azure-search-indexes/Azure_Index_Properties.png "Viewing the properties of an Azure Search index in Kentico")

   > **Note:** **Note**: The statistics in the **Index info** section (indexed items, index file size) do not update immediately after creating or updating an index. There may be a delay of up to several minutes before the statistics are updated in the Azure Search service and displayed correctly in Kentico.

If all configuration is valid and the build succeeds, the index is created and ready for use. You can view the index under the specified Azure Search service in the [Microsoft Azure portal](https://portal.azure.com/).

To allow visitors to search your website using the index, you need to build a custom search interface as described in [Integrating Azure Search into pages](https://docs.kentico.com/k11/configuring-kentico/setting-up-search-on-your-website/using-azure-search/integrating-azure-search-into-pages.md).

> **Tip:** **Keeping Azure Search indexes up-to-date**
>
> When changes are made to the indexed content, the system automatically updates the search index by logging and processing [indexing tasks](https://docs.kentico.com/k11/configuring-kentico/setting-up-search-on-your-website/monitoring-search-indexing-tasks.md).
>
> However, if you make changes to the index's configuration, you need to perform the **Rebuild** action (deletes the current content of the index and populates it again). The following configuration changes require an index rebuild:
>
> - All options on the _General_, _Sites_, _Cultures_ or _Indexed_ content tabs of the index editing interface
> - Adjustments of the search field settings for the indexed objects (see the [Configuring Azure Search settings for fields](#configuring-azure-search-settings-for-fields) section)
> - Customizations that adjust how the system builds the index (see [Customizing Azure Search](https://docs.kentico.com/k11/configuring-kentico/setting-up-search-on-your-website/using-azure-search/customizing-azure-search.md))
>
> Note: The Azure Search service only guarantees **eventual consistency**. When you perform content updates or index rebuilds in Kentico, the changes may not be reflected immediately by the Azure Search. You may experience delays and/or receive outdated results due to the required network communication and the distributed nature of cloud-based services.

## Defining the content of page indexes

Azure Search indexes of the **Pages** type cover the following page data (depending on the used [search field settings](#configuring-azure-search-settings-for-fields)):

- Selected fields of individual page types
- The content of text web parts placed on pages (_Editable text_, _Static text_, etc.)
- Page metadata

> **Note:** **Note**: Page data within Azure Search indexes does NOT include all text displayed in the output of a given page. For example, the text of other pages or objects displayed through web parts (such as the content of news pages displayed through a _Repeater_ web part) is not indexed.

Use the following process to specify the content of page indexes:

1. Create or edit an Azure Search index of the **Pages** type in the **Smart search** application.
2. Open the **Sites** tab and assign the websites whose content you wish to index.
3. Switch to the **Cultures** tab and select which language versions of the website's pages are indexed.
   - At least one culture must be assigned for the index to be functional.
4. Select the **Indexed content** tab.
5. Click **Add allowed content** or **Add excluded content**.
6. For each item of included or excluded content, specify pages using a combination of the following options:
   - **Path** – [path expression](https://docs.kentico.com/k11/developing-websites/loading-and-displaying-data-on-websites/loading-page-data/writing-page-path-expressions.md) identifying the pages that should be indexed.
   - **Page types** – allows you to limit which [page types](https://docs.kentico.com/k11/developing-websites/defining-website-content-structure/page-types.md) are included in the index.
7. (Optional) For included content, configure the following optional settings:
   - **Include ad-hoc forums** – includes the content of ad-hoc [forums](https://docs.kentico.com/k11/community-features/forums.md) placed on the specified pages (if there are any).
   - **Include blog comments** – includes blog comments posted for blog post pages.
   - **Include message boards** – includes message boards placed on the specified pages.
   - **Include attachment content** – if selected, the index includes the text content of files attached to the specified pages. See [Searching attachment files](https://docs.kentico.com/k11/configuring-kentico/setting-up-search-on-your-website/searching-attachment-files.md) for more information.
   - **Include categories** – if selected, the index stores the display names of [Categories](https://docs.kentico.com/k11/managing-website-content/working-with-pages/categorizing-pages.md) assigned to the specified pages. This allows users to find pages that belong to categories whose name matches the search expression.

     > **Info:** Values added via the special included content options are stored within the **sys\_content** system field of the Azure Search index.
8. Click **Save** to confirm the settings of each included/excluded content item.
9. Switch to the index's **General** tab and **Rebuild** the index.

The index now stores the data of the specified pages.

> **Tip:** **Excluding individual pages from all indexes**
>
> You can also exclude specific pages from all search indexing:
>
> 1. Open the **Pages** application.
> 2. Select the given page in the content tree.
> 3. In **Edit** mode, open the **Properties -> Navigation** tab.
> 4. Select the **Exclude from search** option.
> 5. Click **Save**.

## Defining the content of general indexes

When creating or editing an Azure Search index of the **General** type in the **Smart search** application, use the following process to specify the content of the index:

1. Open the index's **Indexed content** tab and set the following properties:
   - **Object name** – selects the type of objects searched by the index.
   - (Optional) **Where condition** – sets a custom WHERE clause for the queries that retrieve data when building the index. Allows you to limit which objects are included in the index.
2. Click **Save**.
3. Switch to the **Search fields** tab to configure which fields are included in the index (see the [Configuring Azure Search settings for fields](#configuring-azure-search-settings-for-fields) section for details).
4. Click **Save**.
5. Open the **General** tab and **Rebuild** the index.

The index now stores the data of the specified objects and fields.

> **Info:** **Notes**:
>
> - The search field configuration is global for objects of a single type. If you have multiple general indexes for one object type (i.e. using the same **Object name**), changing the search field settings for one index also affects the others.
> - Selections made on the **Sites** tab do not have any effect for Azure Search indexes of the _General_ type. If you wish to configure a general index to search only through objects assigned to a specific site, we recommend using the **Where condition** property on the **Indexed content** tab.

## Configuring Azure Search settings for fields

Pages and objects in Kentico are often complex data structures with many different fields. The system allows you to adjust how specific fields are indexed for the Azure Search. Not all fields may be relevant for your search scenario and we recommend indexing only necessary fields to keep your indexes as small (and fast) as possible.

To configure the field search settings for indexes of the **Pages** type:

- Fields of specific [Page types](https://docs.kentico.com/k11/developing-websites/defining-website-content-structure/page-types.md):

  1. Open the **Page types** application.
  2. Edit a page type.
  3. Select the **Search fields** tab.
- Common fields shared by all pages and fields of [E-commerce SKUs](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/products.md) (products):

  1. Open the **Modules** application.
  2. Edit the **E-commerce** module.
  3. Open the **Classes** tab.
  4. Edit the **SKU** class.
  5. Select the **Search** tab.
  6. Click **Customize**.

To configure the field search settings for indexes of the **General** type, edit a given index in the **Smart search** application and open the **Search fields** tab.

In all cases, the search field editing interface contains a grid where you can configure the following options under the **Azure** and **General** sections (to learn about the settings for locally stored indexes, see the [Creating local search indexes](https://docs.kentico.com/k11/configuring-kentico/setting-up-search-on-your-website/using-locally-stored-search-indexes/creating-local-search-indexes.md) chapter).

| Content            | If selected, the field's value is added to the **sys\_content** system field within the search index.<br>The _sys\_content_ field:<br>Combines the values of all fields with the _Content_ flag<br>Has the **Searchable** attribute enabled (i.e. the field is full-text searchable) |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Retrievable        | Sets the corresponding Azure Search attribute for the field.<br>See the [Create Index](https://docs.microsoft.com/en-us/rest/api/searchservice/Create-Index) article (_Index Attributes_ section) for detailed information about Azure Search field attributes.                      |
| Searchable         |                                                                                                                                                                                                                                                                                      |
| Facetable          |                                                                                                                                                                                                                                                                                      |
| Filterable         |                                                                                                                                                                                                                                                                                      |
| Sortable           |                                                                                                                                                                                                                                                                                      |
| Custom search name | Sets a custom name for the field within search indexes that overrides the default Kentico field name.                                                                                                                                                                                |

![Configuring a page type's field settings for Azure Search](https://docs.kentico.com/docsassets/k11/creating-azure-search-indexes/Azure_Search_Fields.png "Configuring a page type's field settings for Azure Search")

To apply changes, click **Save** and **Rebuild** any related Azure Search indexes.

> **Tip:** **Tip**: You can set other field attributes (such as language analyzers) by [Customizing the Azure Search](https://docs.kentico.com/k11/configuring-kentico/setting-up-search-on-your-website/using-azure-search/customizing-azure-search.md).

> **Note:** **Note**: The drop-down selectors in the top part of the search field editing interface (_Title field_, _Content field_, etc.) do not have any effect for Azure Search indexes. The format of search results is fully controlled by the implementation of your custom search components (see [Integrating Azure Search into pages](https://docs.kentico.com/k11/configuring-kentico/setting-up-search-on-your-website/using-azure-search/integrating-azure-search-into-pages.md)).
