Микросервис search
Микросервис search отвечает за управление индексацией и работу с поиском.
Доступ к сервису предоставляется по запросу.
Логика работы
В работе микросервиса в эндпоинте POST /search/products используется сущность ProductDocumentDto, которая содержит информацию о продукте (идентификатор, цена, доступность на складе, описание, и др.).
Аутентификация
При обращении к сервису аутентификация не нужна.
Service context path
/api/search/
Настройки и параметры конфигурации
Параметры конфигурации указываются в Vault.
Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.
{
"env": {
"JAVA_XMS": "XXm",
"JAVA_XMX": "YYYm",
"SERVER_PORT": "порт_сервера"
}
}
// пример взят с тестового стенда
{
"env": {
"SEARCH_ENGINE_URL": "url_доступа_к_поисковому_движку",
"SPRING_OAUTH_AUTHORITY": "домен_сервера_аутентификации",
"SPRING_OAUTH_CLIENT_ID": "client_id",
"STAND_NAME": "имя_стенда"
}
}
Методы микросервиса
Работа с индексом
Добавление документов (сущности ProductDocumentDto) к поисковому движку - POST запрос, /v1/index/document
[
{
"id":
"branded-shirt",
"productId":
"branded-shirt",
"name": "Branded
Shirt",
"title": "Branded Shirt",
"description": "Very nice branded Polo-Shirt in
size XL.",
"longDescription": "Very nice
branded Polo-Shirt in size XL made from cotton in various colours.",
"assets": [
{
"id":
"string",
"media":
{
"url":
"string",
"absoluteUrl": "string",
"name": "string",
"type": "string",
"size": 0,
"resolution": "string"
},
"title": "string",
"altAttr": "string",
"description": "string",
"sign": "string",
"tags": [
"string"
]
}
],
"type": "string",
"attributeValues": {
"additionalProp1": {
"id": "black",
"name":
"Black"
},
"additionalProp2": {
"id": "black",
"name": "Black"
},
"additionalProp3":
{
"id": "black",
"name": "Black"
}
},
"categories": {
"additionalProp1": {
"id": "c001",
"name": "Clothe",
"parentId": "c002",
"level": 0
},
"additionalProp2": {
"id": "c001",
"name": "Clothe",
"parentId": "c002",
"level": 0
},
"additionalProp3": {
"id": "c001",
"name": "Clothe",
"parentId": "c002",
"level": 0
}
},
"prices":
"{f74b2e3d-53e4-4370-afdd-146488a88f6e=8.0,b9bf6563-783e-4127-a38f-00b266c6ba48=10.0}",
"stockStatus": "IN_STOCK"
}
]
- 201 - операция успешно выполнена, документ индексирован
- 500 - ошибка
Удаление всех документов (сущности ProductDocumentDto) из поискового движка - DELETE запрос, /v1/index/{indexName}
indexName - path-параметр, обязательный: название
индекса
202 - операция по удалению индекса выполнена успешно
Работа с поиском
Поиск продуктов по каталогу - POST запрос, /v1/search/products
currencyId - query-параметр, обязательный: идентификатор валюты, по
которой осуществляется поиск продуктов
{
"term": "блузка",
"facets": [
{
"name": "color",
"value": []
},
{
"name": "stock",
"value": [
"IN_STOCK"
]
},
{
"name":
"category",
"value": []
}
],
"ranges": [],
"page": 0,
"size": 1000
}
{
"content": [
{
"id":
"1000445DC",
"productId": "1000444DC",
"name": "Блузка шелковая",
"description": "Женская блузка - самая базовая вещь в любом гардеробе! Базовый
женский топ прямого кроя уместен для офисной работы и экстравагантного вечера.
Стильная рубашка имеет очень красивый воротничок. Боди из мягкой эластичной
вискозы. Вещь создана привлечь все восторженные взгляды на любом празднике.
Эта модель блузки может стать основой не только делового, но и вечернего
гардероба.",
"assets": [
{
"id": "efb31435-6899-4088-a1da-8cd4a369095b",
"media": {
"url":
"master/catalog/images/1704914104313-1882559365.png",
"absoluteUrl":
"https://storage.yandexcloud.net/dc-demo-ecom-media-public/master/catalog/images/1704914104313-1882559365.png",
"name":
"блузка синяя.png",
"type": "PHOTO",
"size": 903666,
"resolution": "900x1200 px"
},
"title": "Блузка",
"altAttr": "Блузка",
"description": "",
"sign":
"",
"tags": [
""
]
}
],
"attributeValues": {
"Цвет": {
"id": "синий",
"name": "Синий"
},
"Размер": {
"id": "onesize",
"name": "Onesize"
}
},
"categories": {
"0": {
"id":
"cat1000057DC",
"name":
"Женщинам",
"level": 0
},
"1": {
"id": "cat1000064DC",
"name": "Футболки и топы",
"parentId": "cat1000057DC",
"level": 1
},
"2": {
"id": "cat1000100DC",
"name": "Блузки",
"parentId":
"cat1000064DC",
"level":
2
}
},
"prices": {
"02d3eb94-8d0c-4e21-a952-db8684a1534d": {
"unitPrice": 25.00,
"discountUnitPrice": 25.00
},
"90e5fed1-1eaa-4e45-8574-b687605817fd": {
"unitPrice": 5500.00,
"discountUnitPrice": 5500.00
}
},
"stockStatus": "IN_STOCK"
},
{
"id": "1000446DC",
"productId":
"1000444DC",
"name": "Блузка шелковая",
"description": "Женская блузка -
самая базовая вещь в любом гардеробе! Базовый женский топ прямого кроя уместен
для офисной работы и экстравагантного вечера. Стильная рубашка имеет очень
красивый воротничок. Боди из мягкой эластичной вискозы. Вещь создана привлечь
все восторженные взгляды на любом празднике. Эта модель блузки может стать
основой не только делового, но и вечернего гардероба.",
"assets": [
{
"id":
"4f19256b-28f4-46ff-8f41-9259e796a1c8",
"media": {
"url": "master/catalog/images/1704914035989-1882559365.png",
"absoluteUrl":
"https://storage.yandexcloud.net/dc-demo-ecom-media-public/master/catalog/images/1704914035989-1882559365.png",
"name":
"блузка кр.png",
"type": "PHOTO",
"size": 810682,
"resolution": "900x1200 px"
},
"title": "Блузка",
"altAttr": "Блузка",
"description": "",
"sign":
"",
"tags": [
""
]
}
],
"attributeValues": {
"Цвет": {
"id": "красный",
"name": "Красный"
},
"Размер": {
"id": "onesize",
"name": "Onesize"
}
},
"categories": {
"0": {
"id":
"cat1000057DC",
"name":
"Женщинам",
"level": 0
},
"1": {
"id": "cat1000064DC",
"name": "Футболки и топы",
"parentId": "cat1000057DC",
"level": 1
},
"2": {
"id": "cat1000100DC",
"name": "Блузки",
"parentId":
"cat1000064DC",
"level":
2
}
},
"prices": {
"02d3eb94-8d0c-4e21-a952-db8684a1534d": {
"unitPrice": 5500.00,
"discountUnitPrice": 5500.00
}
},
"stockStatus": "IN_STOCK"
},
{
"id":
"1000490DC",
"productId": "1000444DC",
"name": "Блузка шелковая",
"description": "Женская блузка - самая базовая вещь в любом гардеробе! Базовый
женский топ прямого кроя уместен для офисной работы и экстравагантного вечера.
Стильная рубашка имеет очень красивый воротничок. Боди из мягкой эластичной
вискозы. Вещь создана привлечь все восторженные взгляды на любом празднике.
Эта модель блузки может стать основой не только делового, но и вечернего
гардероба.",
"assets": [
{
"id": "ebc2e041-094e-468f-b000-1a119eced36f",
"media": {
"url":
"master/catalog/images/1704913879776-1882559365.png",
"absoluteUrl":
"https://storage.yandexcloud.net/dc-demo-ecom-media-public/master/catalog/images/1704913879776-1882559365.png",
"name":
"блузка.png",
"type": "PHOTO",
"size": 937547,
"resolution": "900x1200 px"
},
"title": "Блузка",
"altAttr": "Блузка",
"description": "",
"sign":
"",
"tags": [
""
]
},
{
"id":
"108a7141-3c36-446d-8610-dc0848f8bf3a",
"media": {
"url": "master/catalog/images/1704913879654-1882559365.png",
"absoluteUrl":
"https://storage.yandexcloud.net/dc-demo-ecom-media-public/master/catalog/images/1704913879654-1882559365.png",
"name":
"блузка1.png",
"type": "PHOTO",
"size": 747116,
"resolution": "900x1200 px"
},
"title": "Блузка",
"altAttr": "Блузка",
"description": "",
"sign":
"",
"tags": [
""
]
},
{
"id":
"1d7697b3-5030-466c-b056-94b4f690f9e0",
"media": {
"url": "master/catalog/images/1704913879570-1882559365.png",
"absoluteUrl":
"https://storage.yandexcloud.net/dc-demo-ecom-media-public/master/catalog/images/1704913879570-1882559365.png",
"name":
"блузка2.png",
"type": "PHOTO",
"size": 657672,
"resolution": "900x1200 px"
},
"title": "Блузка",
"altAttr": "Блузка",
"description": "",
"sign":
"",
"tags": [
""
]
}
],
"attributeValues": {
"Цвет": {
"id": "коричневый",
"name": "Коричневый"
},
"Размер": {
"id": "onesize",
"name": "Onesize"
}
},
"categories": {
"0": {
"id":
"cat1000057DC",
"name":
"Женщинам",
"level": 0
},
"1": {
"id": "cat1000064DC",
"name": "Футболки и топы",
"parentId": "cat1000057DC",
"level": 1
},
"2": {
"id": "cat1000100DC",
"name": "Блузки",
"parentId":
"cat1000064DC",
"level":
2
}
},
"prices": {
"02d3eb94-8d0c-4e21-a952-db8684a1534d": {
"unitPrice": 27.00,
"discountUnitPrice": 27.00
},
"90e5fed1-1eaa-4e45-8574-b687605817fd": {
"unitPrice": 2300.00,
"discountUnitPrice": 2300.00
}
},
"stockStatus": "IN_STOCK"
}
],
"number": 0,
"size": 3,
"totalElements": 3,
"pageable":
"INSTANCE",
"last": true,
"totalPages": 1,
"sort": {
"unsorted":
true,
"sorted":
false,
"empty":
true
},
"first": true,
"numberOfElements": 3,
"empty": false
}
Response codes:
200 - операция выполнена успешно, возвращен список с продуктами, подходящими под поисковый запрос
Поиск фасетов - POST запрос, /v1/search/facets
currencyId - query-параметр, обязательный:
идентификатор валюты, по которой осуществляется поиск продуктов
{
"size": {
"values": [
{
"count": 2,
"value": "s"
}
]
},
"color": {
"values": [
{
"count": 3,
"value": "black"
},
{
"count": 1,
"value":
"red"
}
]
},
"price":
{
"count": 33,
"min": 0.0,
"max": 6503.0
},
"category":
{
"values": [
{
"count": 10,
"value": "Верхняя
одежда "
},
{
"count": 6,
"value": "Куртки мужские"
},
{
"count":
13,
"value": "Одежда универсальная",
"childs": [
{
"count":
5,
"value": "Для женщин"
}
]
},
{
"count": 19,
"value": "Смартфоны",
"childs":
[
{
"count": 3,
"value": "iPhone"
}
]
},
{
"count": 1,
"value": "Универсальные товары",
"childs": [
{
"count":
1,
"value": "Одежда"
}
]
}
]
},
"stock": {
"values":
[
{
"count": 146,
"value":
"UNKNOWN"
},
{
"count": 47,
"value": "IN_STOCK"
},
{
"count": 11,
"value": "OUT_OF_STOCK"
}
]
}
}
200 - операция выполнена успешно
Поиск при помощи фильтров и фасетов - POST запрос, /v1/search/filtered-facets
currencyId - query-параметр, обязательный: идентификатор валюты, по
которой осуществляется поиск продуктов
{
"term": "",
"facets": [
{
"name": "color",
"value": []
},
{
"name":
"stock",
"value": [
"IN_STOCK"
]
}
],
"ranges": [
{
"name": "price",
"start": 3,
"end": 10
}
]
}
{
"price": {
"count": 13,
"min": 3.0,
"max": 10.0
},
"stock":
{
"values": [
{
"count": 13,
"value":
"IN_STOCK"
}
]
},
"category":
{
"values": [
{
"count": 1,
"value":
"Аксессуары",
"childs": [
{
"count": 1,
"value": "Сумки и рюкзаки",
"childs": [
{
"count": 1,
"value":
"Рюкзаки"
}
]
}
]
},
{
"count": 4,
"value":
"Мужчинам",
"childs": [
{
"count": 4,
"value": "Шорты"
}
]
},
{
"count": 1,
"value": "Продукты",
"childs":
[
{
"count": 1,
"value": "Молоко, яйцо, масло",
"childs":
[
{
"count": 1,
"value": "Масло сливочное"
}
]
}
]
},
{
"count":
7,
"value": "Спорт",
"childs": [
{
"count": 7,
"value": "Фитнес",
"childs":
[
{
"count": 3,
"value": "Аксессуары"
},
{
"count": 4,
"value": "Коврики"
}
]
}
]
}
]
}
}
Response codes:
200 - операция выполнена успешно