Микросервис search
Микросервис search используется в работе поиска и фильтрации.
Доступ к сервису предоставляется по запросу.
Логика работы
В работе микросервиса в эндпоинте POST /search/products используется сущность ProductDocumentDto, которая содержит информацию о продукте (идентификатор, цена, доступность на складе, описание, и др.).
Аутентификация
При обращении к сервису аутентификация не нужна.
Service context path
/api/search/
Настройки и параметры конфигурации
Параметры конфигурации указываются в Vault.
Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.
{
"env": {
"JAVA_XMS": "XXm",
"JAVA_XMX": "YYYm"
}
}
// пример взят с тестового стенда
{
"env": {
"SEARCH_ENGINE_URL": "url_доступа_к_поисковому_движку",
"SPRING_OAUTH_AUTHORITY": "домен_сервера_аутентификации",
"SPRING_OAUTH_CLIENT_ID": "client_id"
}
}
Методы микросервиса
- Поиск продуктов по каталогу - 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
}
200 - операция выполнена успешно, возвращен список с продуктами, подходящими под поисковый запрос
- Поиск фасетов - POST запрос, /v1/search/facets
currencyId - query-параметр, обязательный:
идентификатор валюты, по которой осуществляется поиск продуктов
{
"term": "Flask",
"facets": [
{
"name": "color",
"value": [
"Black",
"Red"
]
}
],
"ranges": [
{
"name": "color",
"start": 0,
"end": 0
}
]
}
{
"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": "Коврики"
}
]
}
]
}
]
}
}
200 - операция выполнена успешно
- Получение значений фильтров по характеристикам - POST запрос, /v1/search/facets/features
categoryId - query-параметр: уникальный идентификатор категории
Отсутствует.
[
{
"name":"Глубина",
"values":[
"20 см"
],
"type":"TEXT"
},
{
"name":"Характеристика",
"values":[
"Цвет"
],
"type":"TEXT"
},
{
"name":"Упаковка",
"values":[
"Весовая, кг",
"Бумага",
"string",
"Стекло",
"Металл",
"новая упаковка",
"Картон",
"Пластик",
"Пленка",
"Коробка",
"Тара, 5кг",
"Green"
],
"type":"TEXT"
}
]
200 - операция выполнена успешно, получены значения фильтров по характеристикам