REST-сервис поиска search¶
Модуль предназначен для работы с поисковым движком, в частности для выполнения следующих действий:
Работа с индексами: создание, настройка, обновление, удаление;
Работа с маппингами;
Формирование и исполнение запросов по индексации;
Формирование и исполнение поисковых запросов.
Подробные примеры запросов и ответов см. в REST-сервисе v2.search
в Swagger.
Поиск записей¶
Для поиска записей по одному или нескольким атрибутам в теле запроса (метод POST) необходимо минимально указать следующие параметры:
countOnly (обязательный) - по умолчанию false, если true - в ответе возвращается только количество объектов;
entity (обязательный) - имя реестра/справочника, в котором будет осуществлен поиск;
searchFields (опциональный) - перечисление одного или нескольких атрибутов, по которым будет осуществлен поиск;
searchDataType (обязательный) - тип сущности, в которой будет производиться поиск. По умолчанию record, т.к необходим поиск записи.
Также см. перечень остальных параметров в Таблице 1, с помощью которых можно конкретизировать поиск.
Таблица 1 – Параметры записей, используемые в теле запроса
№ |
Параметр |
Обязательность |
Массив |
Тип данных |
Описание |
---|---|---|---|---|---|
1 |
countOnly |
О |
нет |
boolean |
Возвращать в ответе только количество |
2 |
totalCount |
Н |
нет |
boolean |
Отображение общего количества записей справочника/реестра |
3 |
drafts |
Н |
нет |
boolean |
Отображение черновиков/опубликованных записей |
4 |
formFields |
Н |
да |
string |
Поисковые критерии для выполнения поиска по атрибутам/системным полям |
5 |
formGroups |
Н |
да |
string |
Группы поисковых критериев для выполнения поиска по атрибутам/системным полям |
6 |
returnFields |
Н |
да |
string |
Атрибуты, которые возвращаются в ответе |
7 |
searchFields |
Н |
да |
string |
Атрибуты для выполнения поиска по ним |
8 |
fetchAll |
Н |
нет |
boolean |
Поиск записей без учета поисковых критериев |
10 |
entity |
О |
нет |
string |
Наименование реестра/справочника для поиска записей |
11 |
searchDataType |
О |
нет |
string |
Тип сущностей для поиска |
13 |
count |
Н |
нет |
int |
Количество записей, которые вернутся в ответе. При отсутствии атрибута возвращается только общее количество записей |
15 |
sortFields |
Н |
да |
string |
Сортировка последовательности отображения атрибутов |
Пример тела запроса
{
"payload": {
"org.unidata.mdm.rest.v2.data": {
"countOnly": false,
"totalCount": true,
"drafts": false,
"formFields": [],
"formGroups": [],
"returnFields": [
"$etalon_id",
"$created_at",
"$updated_at",
"$from",
"$to",
"$created_at",
"$updated_at",
"$etalon_id",
"$external_keys",
"fio",
"currentPassport",
"Person_Family",
"Name",
"Middle_Name",
"Citizenship",
"Sex",
"Date_of_Birth",
"Person_Doc.Doc_Type",
"Person_Doc.Doc_Series",
"Person_Doc.Doc_Number",
"Person_Doc.Doc_Issue_Date",
"Person_Doc",
"Contact.prohibition_contact",
"Contact",
"Addres.Full_addres",
"Addres.Type_address",
"Addres.Status_addres",
"Addres",
"Attachments",
"mdm_id",
"key",
"passportIssueDate",
"issued",
"relative"
],
"searchFields": [
"$etalon_id",
"$created_at",
"$updated_at",
"$from",
"$to",
"fio",
"currentPassport",
"Person_Family",
"Name",
"Middle_Name",
"Sex",
"Date_of_Birth",
"Person_Doc",
"Contact",
"Addres",
"Attachments",
"key",
"passportIssueDate",
"issued",
"relative"
],
"fetchAll": false,
"asOf": "2023-05-02T09:42:46.516Z",
"entity": "Person",
"searchDataType": "RECORD",
"page": 1,
"count": 20,
"start": 0,
"sortFields": []
},
"org.unidata.mdm.rest.v2.dq.data": {
"setNames": [],
"ruleNames": [],
"functionNames": [],
"message": null,
"severity": null,
"category": null,
"totalScore": 0,
"matchAll": false,
"negate": false
}
}
}
Пример ответа
{
"details": {
"info": [],
"warning": [],
"error": []
},
"payload": {
"org.unidata.mdm.rest.v2.data": {
"fields": [
"$deleted",
"$etalon_id",
"Name"
],
"hits": [
{
"id": "11319b0a-e8ed-11ed-a4c8-25466b9aac31-10000253402289999999",
"score": 1.0,
"status": null,
"preview": [
{
"field": "$deleted",
"values": [
false
],
"extendedValues": [
{
"value": false,
"displayValue": null,
"linkedEtalonId": null
}
]
},
{
"field": "$etalon_id",
"values": [
"11319b0a-e8ed-11ed-a4c8-25466b9aac31"
],
"extendedValues": [
{
"value": "11319b0a-e8ed-11ed-a4c8-25466b9aac31",
"displayValue": null,
"linkedEtalonId": null
}
]
},
{
"field": "Name",
"values": [
"TEST NEW 2"
],
"extendedValues": [
{
"value": "TEST NEW 2",
"displayValue": null,
"linkedEtalonId": null
}
]
}
],
"source": null
}
],
"totalCount": 10179,
"totalCountLimit": 200000,
"hasRecords": false,
"maxScore": "NaN"
}
}
}