Микросервис search-admin
Микросервис search-admin используется в работе поиска и фильтрации.
Доступ к сервису предоставляется по запросу.
Логика работы 
В работе микросервиса используются следующие сущности:
- Синоним (SynonymDto) - содержит данные о синониме слова, содержащегося в поисковом запросе (идентификатор, источник, назначение, тип);
- Стоп-слово (StopWordDto) - содержит данные о стоп-слове, которое не возвращает результатов при поиске (идентификатор, стоп-слово);
- Ускорение запроса (QueryBoostDto) - содержит данные об ускорении поискового запроса для мультивариативных товаров (идентификатор, запросы, идентификаторы мультивариативных товаров, дата начала, дата окончания);
Аутентификация 
При обращении к сервису аутентификация не нужна.
Service context path 
/api/search-admin/
Настройки и параметры конфигурации 
Параметры конфигурации указываются в Vault.
Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.
{
"env": {
"MONGO_DB_HOST": "хост для подключения к БД",
"MONGO_DB_PASSWORD": "пароль для БД"
}
}
{
"env": {
"MONGO_DB_HOST": "хост для подключения к БД",
"MONGO_DB_PASSWORD": "пароль для БД"
}
}
Работа со стоп-словами 
- Создание новых стоп-слов - POST запрос, /v1/stop-words
Отсутствуют
{
"stopWords": [
"string1",
"string2",
"string3"
]
}
[
{
"id": "string",
"stopWord": "string"
}
]
201 - операция выполнена успешно, создан список с указанными стоп-словами
- Удаление стоп-слов по ID - DELETE запрос, /v1/stop-words
Отсутствуют
{
"stopWordsIds": [
"string"
]
}
Отсутствует. В ответе приходит только код операции, например, 204.
204 - операция выполнена успешно, стоп-слова удалены
- Получение стоп-слов постранично с пагинацией, фильтрацией и сортировкой - POST запрос, /v1/stop-words/page
Отсутствуют
{
"sort": [
{
"sortBy": "string",
"direction": "ASC"
}
],
"page": 0,
"size": 1,
"filter": {
"stopWord": "string"
}
}
[
{
"id": "string",
"stopWord": "string"
}
]
200 - операция выполнена успешно
- Получение стоп-слов по их ID - POST запрос, /v1/stop-words/ids
Отсутствуют
{
"stopWordsIds": [
"string"
]
}
[
{
"id": "string",
"stopWord": "string"
}
]
200 - операция выполнена успешно
- Обновление стоп-слова по ID - PATCH запрос, /v1/stop-words/{id}
id - path-параметр, обязательный: уникальный идентификатор стоп-слова
{
"stopWord": "string"
}
{
"id": "string",
"stopWord": "string"
}
200 - операция выполнена успешно, стоп-слово обновлено
400 - стоп-слово с таким ID не найдено
- Получение отфильтрованного списка стоп-слов - POST запрос, /v1/stop-words/list
Отсутствуют
{
"stopWord": "string"
}
{
"id": "string",
"stopWord": "string"
}
200 - операция выполнена успешно
- Создание списка стоп-слов - PUT запрос, /v1/stop-words/list
Отсутствуют
[
{
"id": "string",
"stopWord": "string"
}
]
{
"created": 0,
"updated": 0
}
200 - операция выполнена успешно, список стоп-слов создан или обновлен
Работа с синонимами ![]()
- Создание нового синонима - POST запрос, /v1/synonyms
Отсутствуют
{
"source": [
"string"
],
"destination": [
"string"
],
"type": "ONE_SIDED"
}
{
"id": "string",
"source": [
"string"
],
"destination": [
"string"
],
"type": "ONE_SIDED"
}
200 - операция выполнена успешно, синоним создан
400 - синоним не создан
- Удаление синонимов по ID - DELETE запрос, /v1/synonyms
Отсутствуют
{
"synonymsIds": [
"string"
]
}
Отсутствует. В ответе приходит только код операции, например, 204.
204 - операция выполнена успешно, синонимы удалены
404 - синонимы не найдены
- Получение синонима по ID - GET запрос, /v1/synonyms/{id}
id - path-параметр, обязательный: уникальный идентификатор синонима
{
"id": "string",
"source": [
"string"
],
"destination": [
"string"
],
"type": "ONE_SIDED"
}
200 - операция выполнена успешно
404 - синоним с таким ID не найден
- Обновление синонима по ID - PATCH запрос, /v1/synonyms/{id}
id - path-параметр, обязательный: уникальный идентификатор синонима
{
"source": [
"string"
],
"destination": [
"string"
]
}
{
"id": "string",
"source": [
"string"
],
"destination": [
"string"
],
"type": "ONE_SIDED"
}
200 - операция выполнена успешно, синоним обновлен
400 - синоним с таким ID не найден
- Получение синонимов постранично с пагинацией, фильтрацией и сортировкой - POST запрос, /v1/synonyms/page
Отсутствуют
{
"sort": [
{
"sortBy": "string",
"direction": "ASC"
}
],
"page": 0,
"size": 1,
"filter": {
"searchTerm": "string",
"destination": "string",
"source": "string",
"type": "ONE_SIDED"
}
}
{
"id": "string",
"source": [
"string"
],
"destination": [
"string"
],
"type": "ONE_SIDED"
}
200 - операция выполнена успешно
- Получение отфильтрованного списка синонимов - POST запрос, /v1/synonyms/list
Отсутствуют
{
"searchTerm": "string",
"destination": "string",
"source": "string",
"type": "ONE_SIDED"
}
{
"id": "string",
"source": [
"string"
],
"destination": [
"string"
],
"type": "ONE_SIDED"
}
200 - операция выполнена успешно
- Создание списка синонимов - PUT запрос, /v1/synonyms/list
Отсутствуют
[
{
"id": "string",
"source": [
"string"
],
"destination": [
"string"
],
"type": "ONE_SIDED"
}
]
{
"created": 0,
"updated": 0
}
200 - операция выполнена успешно, список синонимов создан или обновлен
Работа с ускорением поисковых запросов![]()
- Создание нового ускорения поискового запроса (далее бустинга) - POST запрос, /v1/query-boosts
Отсутствуют
{
"queries": [
"dress",
"shoes"
],
"variantArticleIds": [
"1021612DC",
"1021611DC"
],
"startDate": "2025-03-20T15:16:43.646Z",
"endDate": "2025-03-20T15:16:43.646Z"
}
{
"id": "string",
"queries": [
"dress",
"shoes"
],
"variantArticleIds": [
"1021612DC",
"1021611DC"
],
"startDate": "2025-03-20T15:16:43.647Z",
"endDate": "2025-03-20T15:16:43.647Z"
}
200 - операция выполнена успешно, запись о бустинге создана
422 - ошибка валидации
- Удаление бустингов по ID - DELETE запрос, /v1/query-boosts
Отсутствуют
{
"queryBoostIds": [
"string"
]
}
Отсутствует. В ответе приходит только код операции, например, 204.
204 - операция выполнена успешно, бустинги удалены
422 - ошибка валидации
- Получение бустинга по ID - GET запрос, /v1/query-boosts/{id}
id - path-параметр, обязательный: уникальный идентификатор бустинга
{
"id": "string",
"queries": [
"dress",
"shoes"
],
"variantArticleIds": [
"1021612DC",
"1021611DC"
],
"startDate": "2025-03-20T15:31:07.818Z",
"endDate": "2025-03-20T15:31:07.818Z"
}
{
"timestamp": "string",
"status": 0,
"code": "string",
"error": "string",
"message": "string",
"payload": {
"prop1": "prop1_value",
"prop2": "prop2_value"
},
"path": "string",
"validation": {
"errors": [
{
"codes": [
"string"
],
"arguments": [
{}
],
"defaultMessage": "string",
"objectName": "string",
"code": "string"
}
]
}
}
200 - операция выполнена успешно
400 - бустинг с таким ID не найден
- Обновление бустинга по ID - PATCH запрос, /v1/query-boosts/{id}
id - path-параметр, обязательный: уникальный идентификатор бустинга
{
"queries": [
"dress",
"shoes"
],
"variantArticleIds": [
"1021612DC",
"1021611DC"
],
"startDate": "2025-03-20T15:44:31.090Z",
"endDate": "2025-03-20T15:44:31.090Z"
}
// ответ 200
{
"id": "string",
"queries": [
"dress",
"shoes"
],
"variantArticleIds": [
"1021612DC",
"1021611DC"
],
"startDate": "2025-03-20T15:44:31.091Z",
"endDate": "2025-03-20T15:44:31.091Z"
}
// ответ 404
{
"timestamp": "string",
"status": 0,
"code": "string",
"error": "string",
"message": "string",
"payload": {
"prop1": "prop1_value",
"prop2": "prop2_value"
},
"path": "string",
"validation": {
"errors": [
{
"codes": [
"string"
],
"arguments": [
{}
],
"defaultMessage": "string",
"objectName": "string",
"code": "string"
}
]
}
}
200 - операция выполнена успешно, бустинг обновлен
404 - бустинг с таким ID не найден
422 - ошибка валидации
- Получение бустингов постранично с пагинацией, фильтрацией и сортировкой - POST запрос, /v1/query-boosts/page
Отсутствуют
{
"filter": {
"searchTerm": "string",
"query": {
"value": "string",
"exact": true
},
"variantArticleId": "string",
"onlyActive": true,
"startDate": "2025-03-20T15:52:05.500Z",
"endDate": "2025-03-20T15:52:05.500Z"
},
"sort": [
{
"sortBy": "string",
"direction": "ASC"
}
],
"page": 0,
"size": 1
}
{
"totalPages": 0,
"totalElements": 0,
"first": true,
"last": true,
"size": 0,
"content": [
{
"id": "string",
"queries": [
"dress",
"shoes"
],
"variantArticleIds": [
"1021612DC",
"1021611DC"
],
"startDate": "2025-03-20T15:52:05.501Z",
"endDate": "2025-03-20T15:52:05.501Z"
}
],
"number": 0,
"sort": [
[
{
"direction": "string",
"nullHandling": "string",
"ascending": true,
"property": "string",
"ignoreCase": true
}
]
],
"numberOfElements": 0,
"pageable": {
"pageNumber": 0,
"pageSize": 0,
"paged": true,
"unpaged": true,
"sort": {
"direction": "string",
"nullHandling": "string",
"ascending": true,
"property": "string",
"ignoreCase": true
},
"offset": 0
},
"empty": true
}
200 - операция выполнена успешно
422 - ошибка валидации
- Получение отфильтрованного списка бустингов - POST запрос, /v1/query-boosts/list
Отсутствуют
{
"searchTerm": "string",
"query": {
"value": "string",
"exact": true
},
"variantArticleId": "string",
"onlyActive": true,
"startDate": "2025-03-20T15:56:53.022Z",
"endDate": "2025-03-20T15:56:53.022Z"
}
[
{
"id": "string",
"queries": [
"dress",
"shoes"
],
"variantArticleIds": [
"1021612DC",
"1021611DC"
],
"startDate": "2025-03-20T15:56:53.023Z",
"endDate": "2025-03-20T15:56:53.023Z"
}
]
200 - операция выполнена успешно
422 - ошибка валидации
- Создание списка бустингов- PUT запрос, /v1/query-boosts/list
Отсутствуют
[
{
"id": "string",
"queries": [
"dress",
"shoes"
],
"variantArticleIds": [
"1021612DC",
"1021611DC"
],
"startDate": "2025-03-20T15:59:44.411Z",
"endDate": "2025-03-20T15:59:44.411Z"
}
]
{
"created": 0,
"updated": 0
}
200 - операция выполнена успешно, список бустингов создан или обновлен
422 - ошибка валидации