Микросервис search-admin

В статье описываются функции, логика работы, конфигурация и методы микросервиса search-admin.

Микросервис search-admin используется в работе поиска и фильтрации.

Доступ к сервису предоставляется по запросу.

Логика работы Copy-icon

В работе микросервиса используются следующие сущности:

  • Синоним (SynonymDto) - содержит данные о синониме слова, содержащегося в поисковом запросе (идентификатор, источник, назначение, тип);
  • Стоп-слово (StopWordDto) - содержит данные о стоп-слове, которое не возвращает результатов при поиске (идентификатор, стоп-слово);
  • Ускорение запроса (QueryBoostDto) - содержит данные об ускорении поискового запроса для мультивариативных товаров (идентификатор, запросы, идентификаторы мультивариативных товаров, дата начала, дата окончания);

Аутентификация Copy-icon

При обращении к сервису аутентификация не нужна.

Service context path Copy-icon

/api/search-admin/

Настройки и параметры конфигурации Copy-icon

Параметры конфигурации указываются в Vault.

Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.

По умолчанию

{
  "env": {
    "MONGO_DB_HOST": "хост для подключения к БД",
    "MONGO_DB_PASSWORD": "пароль для БД"

  }
}

Copy-icon
Указываемые на каждом отдельном стенде

{
  "env": {
    "MONGO_DB_HOST": "хост для подключения к БД",
    "MONGO_DB_PASSWORD": "пароль для БД"

  }
}

Copy-icon

Работа со стоп-словами Copy-icon

  • Создание новых стоп-слов - POST запрос, /v1/stop-words
Request parameters

Отсутствуют

Request body sample
{
  "stopWords": [
    "string1",
    "string2",
    "string3"
  ]
}
Copy-icon
Response sample
[
  {
    "id": "string",
    "stopWord": "string"
  }
]
Copy-icon
Response codes

201 - операция выполнена успешно, создан список с указанными стоп-словами

  • Удаление стоп-слов по ID - DELETE запрос, /v1/stop-words
Request parameters

Отсутствуют

Request body sample
{
  "stopWordsIds": [
    "string"
  ]
}
Copy-icon
Response sample

Отсутствует. В ответе приходит только код операции, например, 204.

Response codes

204 - операция выполнена успешно, стоп-слова удалены

  • Получение стоп-слов постранично с пагинацией, фильтрацией и сортировкой - POST запрос, /v1/stop-words/page
Request parameters

Отсутствуют

Request body sample
{
  "sort": [
    {
      "sortBy": "string",
      "direction": "ASC"
    }
  ],
  "page": 0,
  "size": 1,
  "filter": {
    "stopWord": "string"
  }
}
Copy-icon
Response sample
[
  {
    "id": "string",
    "stopWord": "string"
  }
]
Copy-icon
Response codes

200 - операция выполнена успешно

  • Получение стоп-слов по их ID - POST запрос, /v1/stop-words/ids
Request parameters

Отсутствуют

Request body sample
{
  "stopWordsIds": [
    "string"
  ]
}
Copy-icon
Response sample
[
  {
    "id": "string",
    "stopWord": "string"
  }
]
Copy-icon
Response codes

200 - операция выполнена успешно

  • Обновление стоп-слова по ID - PATCH запрос, /v1/stop-words/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор стоп-слова

Copy-icon
Request body sample
{
  "stopWord": "string"
}
Copy-icon
Response sample
{
  "id": "string",
  "stopWord": "string"
}
Copy-icon
Response codes

200 - операция выполнена успешно, стоп-слово обновлено

400 - стоп-слово с таким ID не найдено

  • Получение отфильтрованного списка стоп-слов - POST запрос, /v1/stop-words/list
Request parameters

Отсутствуют

Request body sample
{
  "stopWord": "string"
}
Copy-icon
Response sample
{
  "id": "string",
  "stopWord": "string"
}
Copy-icon
Response codes

200 - операция выполнена успешно

  • Создание списка стоп-слов - PUT запрос, /v1/stop-words/list
Request parameters

Отсутствуют

Request body sample
[
  {
    "id": "string",
    "stopWord": "string"
  }
]
Copy-icon
Response sample
{
  "created": 0,
  "updated": 0
}
Copy-icon
Response codes

200 - операция выполнена успешно, список стоп-слов создан или обновлен

Работа с синонимами

  • Создание нового синонима - POST запрос, /v1/synonyms
Request parameters

Отсутствуют

Request body sample
{
  "source": [
    "string"
  ],
  "destination": [
    "string"
  ],
  "type": "ONE_SIDED"
}
Copy-icon
Response sample
{
  "id": "string",
  "source": [
    "string"
  ],
  "destination": [
    "string"
  ],
  "type": "ONE_SIDED"
}
Copy-icon
Response codes

200 - операция выполнена успешно, синоним создан

400 - синоним не создан

  • Удаление синонимов по ID - DELETE запрос, /v1/synonyms
Request parameters

Отсутствуют

Request body sample
{
  "synonymsIds": [
    "string"
  ]
}
Copy-icon
Response sample

Отсутствует. В ответе приходит только код операции, например, 204.

Response codes

204 - операция выполнена успешно, синонимы удалены

404 - синонимы не найдены

  • Получение синонима по ID - GET запрос, /v1/synonyms/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор синонима

Copy-icon
Response sample
{
  "id": "string",
  "source": [
    "string"
  ],
  "destination": [
    "string"
  ],
  "type": "ONE_SIDED"
}
Copy-icon
Response codes

200 - операция выполнена успешно

404 - синоним с таким ID не найден

  • Обновление синонима по ID - PATCH запрос, /v1/synonyms/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор синонима

Copy-icon
Request body sample
{
  "source": [
    "string"
  ],
  "destination": [
    "string"
  ]
}
Copy-icon
Response sample
{
  "id": "string",
  "source": [
    "string"
  ],
  "destination": [
    "string"
  ],
  "type": "ONE_SIDED"
}
Copy-icon
Response codes

200 - операция выполнена успешно, синоним обновлен

400 - синоним с таким ID не найден

  • Получение синонимов постранично с пагинацией, фильтрацией и сортировкой POST запрос, /v1/synonyms/page
Request parameters

Отсутствуют

Request body sample
{
  "sort": [
    {
      "sortBy": "string",
      "direction": "ASC"
    }
  ],
  "page": 0,
  "size": 1,
  "filter": {
    "searchTerm": "string",
    "destination": "string",
    "source": "string",
    "type": "ONE_SIDED"
  }
}
Copy-icon
Response sample
{
  "id": "string",
  "source": [
    "string"
  ],
  "destination": [
    "string"
  ],
  "type": "ONE_SIDED"
}
Copy-icon
Response codes

200 - операция выполнена успешно

  • Получение отфильтрованного списка синонимов - POST запрос, /v1/synonyms/list
Request parameters

Отсутствуют

Request body sample
{
  "searchTerm": "string",
  "destination": "string",
  "source": "string",
  "type": "ONE_SIDED"
}
Copy-icon
Response sample
{
  "id": "string",
  "source": [
    "string"
  ],
  "destination": [
    "string"
  ],
  "type": "ONE_SIDED"
}
Copy-icon
Response codes

200 - операция выполнена успешно

  • Создание списка синонимов - PUT запрос, /v1/synonyms/list
Request parameters

Отсутствуют

Request body sample
[
  {
    "id": "string",
    "source": [
      "string"
    ],
    "destination": [
      "string"
    ],
    "type": "ONE_SIDED"
  }
]
Copy-icon
Response sample
{
  "created": 0,
  "updated": 0
}
Copy-icon
Response codes

200 - операция выполнена успешно, список синонимов создан или обновлен

Работа с ускорением поисковых запросов

  • Создание нового ускорения поискового запроса (далее бустинга) - POST запрос, /v1/query-boosts
Request parameters

Отсутствуют

Request body sample
{
  "queries": [
    "dress",
    "shoes"
  ],
  "variantArticleIds": [
    "1021612DC",
    "1021611DC"
  ],
  "startDate": "2025-03-20T15:16:43.646Z",
  "endDate": "2025-03-20T15:16:43.646Z"
}
Copy-icon
Response sample
{
  "id": "string",
  "queries": [
    "dress",
    "shoes"
  ],
  "variantArticleIds": [
    "1021612DC",
    "1021611DC"
  ],
  "startDate": "2025-03-20T15:16:43.647Z",
  "endDate": "2025-03-20T15:16:43.647Z"
}
Copy-icon
Response codes

200 - операция выполнена успешно, запись о бустинге создана

422 - ошибка валидации

  • Удаление бустингов по ID - DELETE запрос, /v1/query-boosts
Request parameters

Отсутствуют

Request body sample
{
  "queryBoostIds": [
    "string"
  ]
}
Copy-icon
Response sample

Отсутствует. В ответе приходит только код операции, например, 204.

Response codes

204 - операция выполнена успешно, бустинги удалены

422 - ошибка валидации

  • Получение бустинга по ID - GET запрос, /v1/query-boosts/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор бустинга

Copy-icon
Response sample/200
{
  "id": "string",
  "queries": [
    "dress",
    "shoes"
  ],
  "variantArticleIds": [
    "1021612DC",
    "1021611DC"
  ],
  "startDate": "2025-03-20T15:31:07.818Z",
  "endDate": "2025-03-20T15:31:07.818Z"
}
Copy-icon
Response sample/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"
      }
    ]
  }
}
Copy-icon
Response codes

200 - операция выполнена успешно

400 - бустинг с таким ID не найден

  • Обновление бустинга по ID - PATCH запрос, /v1/query-boosts/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор бустинга

Copy-icon
Request body sample
{
  "queries": [
    "dress",
    "shoes"
  ],
  "variantArticleIds": [
    "1021612DC",
    "1021611DC"
  ],
  "startDate": "2025-03-20T15:44:31.090Z",
  "endDate": "2025-03-20T15:44:31.090Z"
}
Copy-icon
Response sample
// ответ 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"
      }
    ]
  }
}
Copy-icon
Response codes

200 - операция выполнена успешно, бустинг обновлен

404 - бустинг с таким ID не найден

422 - ошибка валидации

  • Получение бустингов постранично с пагинацией, фильтрацией и сортировкой POST запрос, /v1/query-boosts/page
Request parameters

Отсутствуют

Request body sample
{
  "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
}
Copy-icon
Response sample
{
  "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
}
Copy-icon
Response codes

200 - операция выполнена успешно

422 - ошибка валидации

  • Получение отфильтрованного списка бустингов - POST запрос, /v1/query-boosts/list
Request parameters

Отсутствуют

Request body sample
{
  "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"
}
Copy-icon
Response sample
[
  {
    "id": "string",
    "queries": [
      "dress",
      "shoes"
    ],
    "variantArticleIds": [
      "1021612DC",
      "1021611DC"
    ],
    "startDate": "2025-03-20T15:56:53.023Z",
    "endDate": "2025-03-20T15:56:53.023Z"
  }
]
Copy-icon
Response codes

200 - операция выполнена успешно

422 - ошибка валидации

  • Создание списка бустингов- PUT запрос, /v1/query-boosts/list
Request parameters

Отсутствуют

Request body sample
[
  {
    "id": "string",
    "queries": [
      "dress",
      "shoes"
    ],
    "variantArticleIds": [
      "1021612DC",
      "1021611DC"
    ],
    "startDate": "2025-03-20T15:59:44.411Z",
    "endDate": "2025-03-20T15:59:44.411Z"
  }
]
Copy-icon
Response sample
{
  "created": 0,
  "updated": 0
}
Copy-icon
Response codes

200 - операция выполнена успешно, список бустингов создан или обновлен

422 - ошибка валидации