Микросервис indexer
Микросервис indexer служит для управления индексацией и добавления документов в поисковый движок.
Доступ к сервису предоставляется по запросу.
Логика работы![]()
В работе микросервиса используется сущностьProductDocumentDto, которая содержит информацию о продукте (идентификатор, цена, доступность на складе, медиа ассеты, описание, и др.).
Аутентификация![]()
При обращении к сервису аутентификация не нужна.
Service context path![]()
/api/indexer/
Настройки и параметры конфигурации
Параметры конфигурации указываются в Vault.
Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.
{
"env": {
"JAVA_XMS": "XXm",
"JAVA_XMX": "YYYm",
"KAFKA_BROKER_ADDRESS": "сокет_для_брокера_kafka"
}
}
{
"env": {
"LOGGING_LEVEL": "уровень_логирования",
"SEARCH_ENGINE_URL": "url_доступа_к_поисковому_движку"
}
}
Методы микросервиса
Работа с документами для поискового движка
- Обновление или добавление (если такого документа в БД еще нет) документа (сущности ProductDocumentDto) в поисковом движке - PUT запрос, /v1/documents
Отсутствуют.
{
"id": "8289148DC",
"productId": ""8289148DC",
"catalogId": "c1000001DC",
"name": "Футболка мужская",
"title": "Футболка мужская",
"description": "Очень хорошая мужская футболка.",
"longDescription": "Очень хорошая мужская футболка. Отлично подойдет на лето.",
"assets": [
{
"id": "262fc4d6-6414-4efb-ae17-9da53e643976",
"media": {
"url": "master/catalog/images/1727080928887-1882559365.jpg",
"absoluteUrl": "https://ecom-media.digitalchief.tech/master/catalog/images/1727080928887-1882559365.jpg",
"name": "VdCSfnclhGUQPbxf38uNw.jpg",
"type": "PHOTO",
"size": 89975,
"resolution": "500x500 px"
},
"title": "VdCSfnclhGUQPbxf38uNw",
"altAttr": "Майка",
"description": "Майка",
"sign": "",
"tags": [
""
]
}
],
"type": "string",
"attributeValues": {
"additionalProp1": {
"id": "black",
"name": "Черный"
},
"additionalProp2": {
"id": "black",
"name": "Черный"
},
"additionalProp3": {
"id": "black",
"name": "Черный"
}
},
"categories": {
"additionalProp1": {
"id": "c001",
"name": "Одежда",
"parentId": "c002",
"level": 0
},
"additionalProp2": {
"id": "c001",
"name": "Одежда",
"parentId": "c002",
"level": 0
},
"additionalProp3": {
"id": "c001",
"name": "Одежда",
"parentId": "c002",
"level": 0
}
},
"prices": "{f74b2e3d-53e4-4370-afdd-146488a88f6e=8.0,b9bf6563-783e-4127-a38f-00b266c6ba48=10.0}",
"stockStatus": "IN_STOCK"
}
204 - операция выполнена успешно, документ обновлен или добавлен
- Добавление документа (сущности ProductDocumentDto) в поисковый движок - POST запрос, /v1/documents
Отсутствуют.
{
"id": "8289148DC",
"productId": ""8289148DC",
"catalogId": "c1000001DC",
"name": "Футболка мужская",
"title": "Футболка мужская",
"description": "Очень хорошая мужская футболка.",
"longDescription": "Очень хорошая мужская футболка. Отлично подойдет на лето.",
"assets": [
{
"id": "262fc4d6-6414-4efb-ae17-9da53e643976",
"media": {
"url": "master/catalog/images/1727080928887-1882559365.jpg",
"absoluteUrl": "https://ecom-media.digitalchief.tech/master/catalog/images/1727080928887-1882559365.jpg",
"name": "VdCSfnclhGUQPbxf38uNw.jpg",
"type": "PHOTO",
"size": 89975,
"resolution": "500x500 px"
},
"title": "VdCSfnclhGUQPbxf38uNw",
"altAttr": "Майка",
"description": "Майка",
"sign": "",
"tags": [
""
]
}
],
"type": "string",
"attributeValues": {
"additionalProp1": {
"id": "black",
"name": "Черный"
},
"additionalProp2": {
"id": "black",
"name": "Черный"
},
"additionalProp3": {
"id": "black",
"name": "Черный"
}
},
"categories": {
"additionalProp1": {
"id": "c001",
"name": "Одежда",
"parentId": "c002",
"level": 0
},
"additionalProp2": {
"id": "c001",
"name": "Одежда",
"parentId": "c002",
"level": 0
},
"additionalProp3": {
"id": "c001",
"name": "Одежда",
"parentId": "c002",
"level": 0
}
},
"prices": "{f74b2e3d-53e4-4370-afdd-146488a88f6e=8.0,b9bf6563-783e-4127-a38f-00b266c6ba48=10.0}",
"stockStatus": "IN_STOCK"
}
201 - операция успешно выполнена, документ индексирован
- Удаление документа (сущности ProductDocumentDto) из поискового движка - DELETE запрос, /v1/documents/{id}
id - path-параметр, обязательный: уникальный идентификатор документа
Отсутствует. В ответе приходит только код операции, например, 204.
204 - операция выполнена успешно, документ удален из индекса
Работа с индексацией
- Запуск полной индексации каталога - POST запрос, /v1/index/perform-baseline
Отсутствуют.
Отсутствует.
202 - операция выполнена успешно, индексация выполнена
- Запуск запланированной полной индексации каталога - POST запрос, /v1/index/perform-baseline/scheduled
jobId - query-параметр, обязательный: уникальный идентификатор задачи запланированной индексации
Отсутствует.
202 - операция выполнена успешно, запланированная задача индексации запущена
- Удаление сценария индексации по его названию - DELETE запрос, /v1/index/{indexName}
indexName - path-параметр, обязательный: название сценария индексации
Отсутствует. В ответе приходит только код операции, например, 202.
202 - операция по удалению сценария индексации выполнена успешно
Запланированная индексация цен
- Запуск запланированной частичной индексации цены - POST запрос, /v1/index/scheduled/price
Отсутствуют.
Отсутствует.
201 - операция выполнена успешно, задача по запланированной частичной индексации цены выполнена;
404 - задача по запланированной индексации цены по указанному jobId не найдена
Запланированная полная индексация 
- Создание задачи запланированной полной индексации - POST запрос, /v1/index/scheduled/baseline
Отсутствуют.
{
"name": "string",
"scheduleType": "SIMPLE",
"cron": "string",
"time": "2025-03-03T10:28:49.571Z",
"interval": 1
}
200 - операция успешно выполнена, задача по запланированной полной индексации создана
- Получение страницы с отфильтрованными задачами запланированной полной индексации - POST запрос, /v1/index/scheduled/baseline/page
Отсутствуют.
{
"sort": [
{
"sortBy": "string",
"direction": "ASC"
}
],
"page": 0,
"size": 1,
"filter": {
"searchTerm": "string",
"name": "string",
"type": [
"SIMPLE"
],
"status": [
"PENDING"
],
"startDate": "2025-03-03T10:37:00.263Z",
"endDate": "2025-03-03T10:37:00.263Z"
}
}
{
"totalPages": 0,
"totalElements": 0,
"first": true,
"last": true,
"size": 0,
"content": [
{
"id": "string",
"name": "string",
"scheduleType": "SIMPLE",
"cron": "string",
"time": "2025-03-03T10:41:44.920Z",
"interval": 1,
"status": "PENDING",
"lastExecution": "2025-03-03T10:41:44.920Z"
}
],
"number": 0,
"sort": [
[
{
"direction": "string",
"nullHandling": "string",
"ascending": true,
"property": "string",
"ignoreCase": true
}
]
],
"numberOfElements": 0,
"pageable": {
"paged": true,
"unpaged": true,
"pageNumber": 0,
"pageSize": 0,
"sort": {
"direction": "string",
"nullHandling": "string",
"ascending": true,
"property": "string",
"ignoreCase": true
},
"offset": 0
},
"empty": true
}
200 - операция выполнена успешно, страница с отфильтрованными задачами получена
- Получение списка с отфильтрованными задачами запланированной полной индексации - POST запрос, /v1/index/scheduled/baseline/list
Отсутствуют.
{
"searchTerm": "string",
"name": "string",
"type": [
"SIMPLE"
],
"status": [
"PENDING"
],
"startDate": "2025-03-03T10:46:25.391Z",
"endDate": "2025-03-03T10:46:25.391Z"
}
[
{
"id": "string",
"name": "string",
"scheduleType": "SIMPLE",
"cron": "string",
"time": "2025-03-03T10:46:25.392Z",
"interval": 1,
"status": "PENDING",
"lastExecution": "2025-03-03T10:46:25.392Z"
}
]
200 - операция выполнена успешно, список с отфильтрованными задачами получен
- Получить задачу запланированной полной индексации по ID - GET запрос, /v1/index/scheduled/baseline/{id}
id - path-параметр, обязательный: ID задачи индексации
{
"id": "string",
"name": "string",
"scheduleType": "SIMPLE",
"cron": "string",
"time": "2025-03-03T11:00:34.671Z",
"interval": 1,
"status": "PENDING",
"lastExecution": "2025-03-03T11:00:34.671Z"
}
200 - операция выполнена успешно, получена информация по задаче запланированной индексации
400 - задача запланированной индексации по указанному ID не найдена
- Удаление задачи запланированной полной индексации по ID - DELETE запрос, /v1/index/scheduled/baseline/{id}
id - path-параметр, обязательный: ID задачи индексации
Отсутствует. В ответе приходит только код операции, например, 202.
202 - операция по удалению задачи запланированной индексации выполнена успешно
400 - задача запланированной индексации по указанному ID не найдена
- Обновление задачи запланированной полной индексации по ID - PATCH запрос, /v1/index/scheduled/baseline/{id}
id - path-параметр, обязательный: ID задачи индексации
{
"name": "string",
"scheduleType": "SIMPLE",
"cron": "string",
"time": "2025-03-03T11:21:13.253Z",
"interval": 1
}
{
"id": "string",
"name": "string",
"scheduleType": "SIMPLE",
"cron": "string",
"time": "2025-03-03T11:21:13.253Z",
"interval": 1,
"status": "PENDING",
"lastExecution": "2025-03-03T11:21:13.253Z"
}
200 - операция выполнена успешно, задача запланированной индексации обновлена
400 - задача запланированной индексации по указанному ID не найдена