# Index Configuration

IndexConfiguration is a model that enables adding custom values to Elasticsearch. By creating an IndexConfiguration, you can index numeric attribute values on Elasticsearch, allowing them to be used later for different purposes. There are a few points to pay attention to here. Firstly, we expect our attribute value to be numeric or convertible to a numeric value. For example, values like 1, 100, or "50" can be used at this stage. However, if our attribute values contain different non-numeric values such as "30 cm" or "10x20x50," these non-numeric values will not be indexed.

To create an IndexConfiguration object, a sample request should be as follows:

### `POST` Create an Index Configuration

**Path:** `https://{commerce_url}/api/v1/index-configurations/`

**Example Request**

```json
{
	"name": "Index configuration name",
	"attribute_key": "exist_attribute_name",
	"attribute_type": "integer"
}
```

We need to include all three fields in the body. The "name" part must match with the existing attribute\_key; you cannot pre-add for an attribute that does not exist in the system. The attribute\_type value can be integer, float, or long.

If you make a request for a non-existing attribute\_key, the response will be as follows:

**Example Response**

```json
{
	"attribute_key": [
	"Attribute with key exist_attribute_name \
	does not exist"
	]
}
```

Let's assume that we made a successful request with an existing `attribute_key`. The response would be as follows:

**Example Response**

```json
{
	"pk": 1,
	"name": "Index configuration name",
	"attribute_key": "exist_attribute_name",
	"attribute_type": "integer"
}
```

### Compatibility of Index Configurations with Facets

After creating Index Configurations, the desired data will be indexed into Elasticsearch. From this point onward, how the data will be utilized is at the discretion of the user.

If we need to share an example and explain how custom usage can be applied concerning the rangability of attribute values, let's assume that we have successfully created an IndexConfiguration object as mentioned above, and there are products created with the `attribute_key` used in this object. In this case, we can obtain a rangable facet by creating a new FacetConfiguration object. After creating the IndexConfiguration object, the key used when indexing into Elasticsearch becomes `"custom_"` + `indexconfiguration.attribute_key`. For example, if our `attribute_key` in the defined object is `exist_attribute_name`, the indexed value in Elasticsearch will be `custom_exist_attribute_name`. To ensure matching in this context, the `attribute_key` of our FacetConfiguration object should be `custom_exist_attribute_name`, and we should create a facet for these indexed custom data.

Let's consider that our IndexConfiguration object is created with the following values:

```json
{
"pk": 1,
"name": "Integration Cap Range",
"attribute_key": "integration_cap",
"attribute_type": "integer"
}
```

The values for the example facet object that we need to create should be defined as follows:

### `POST` Create a Facet Configuration

**Path:** `https://{commerce_url}/api/v1/facet/`

**Example Request**

```json
{
"pk": 1,
"name": "Facet name",
"attribute_key": "custom_integration_cap",
"attribute_type": "global",
"widget": "multi_select",
"widget_kwargs": {
"labels": {"1000":"1000 +",
		   "100-1000":"100-1000","0-50":"0-50",
		   "50-100":"50-100"},
"name": "Cap-Range",
"order": 1
},
"facet": "range",
"facet_kwargs": {
"ranges": [["0-50",[0,49]],["50-100",[50,99]],
["100-1000",[100,999]],["1000",[1000,100000]]]},
"settings": {}
}
```

With the object created in this way, now the filter can be used for products with the indexed value of custom\_integration\_cap on the listing page.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://apidocs.akinon.com/commerce/index-configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
