АРІ сипаттамасы
Нұсқаның сипаттамасы
АРІ 4-нұсқаның сипаттамасы
Клиенттік бөлік (Android/iOSқосымша) және data.egov.kz сервері арасында деректер мен алмасу HTTPS хаттамасы арқылы жүзеге асырылады. Деректер бойынша іздеу elasticsearch технологиясын қолданумен іске асырылды. Сұрау салу кезінде параметрлер GET әдісімен HTTPS хаттамасы бойынша келесі форматта жіберіледі:
/api/v4/dataset?source={QueryinJsonObject}
/api/v4/dataset/version?source={QueryinJsonObject}
Бұл сұрау салу dataset деректер жиыны бойыша іздеуді жүзеге асырады, сонымен бірге source параметрі жіберіледі, ол іздеу мен сүзгіден өткізу нақты қалай жасалуы тиіс екендігін сипаттайды.
/api/v4/mapping/dataset
/api/v4/mapping/dataset/version
Бұл сұрау салу dataset деректер жиынында қолданылатын жазбалардың тармақтарын сипаттайды
Сервердің жауабы JSON форматында қайтарылады, ол деректердің іріктелімін немесе қате туралы хабарламаны қамтиды.
Төменде сұрау салулардың мысалдары келтірілген.
1-мысал:
Тармақтардың сипаттамасын және олардың түрлерімен құрылымын,сондай-ақ жиынтықтың нұсқаларын көрсету.
Тармақтардың тізімін және олардың түрлерінің алу үшін, төменде көрсетілген сұрау салуды орындаңыз.
Сұраусалу төмендегідей көрінеді:
/api/v4/mapping/astana_kalasynyn_kylmystyk_kuk1
Жауап:
{ "astana_kalasynyn_kylmystyk_kuk1" : { "mappings" : { "v1" : { "properties" : { "city_code" : { "type" : "string", "store" : true }, "crime_code" : { "type" : "string", "store" : true }, "dat_sover" : { "type" : "string", "store" : true }, "hard_code" : { "type" : "string", "store" : true }, "home_number" : { "type" : "string", "store" : true }, "latitude" : { "type" : "string", "store" : true }, "longitude" : { "type" : "string", "store" : true }, ...
2-мысал:Астанақаласыбойыншажасалғанқылмыстық істерден іріктеменіалу:
/api/v4/mapping/astana_kalasynyn_kylmystyk_kuk1
* жиынтықтыңбірденаса нұсқалары барболса, қажеттінұсқасынкөрсету керек, мысалы:
Жауап:
{ "astana_kalasynyn_kylmystyk_kuk1" : { "mappings" : { "v1" : { "properties" : { "city_code" : { "type" : "string", "store" : true }, "crime_code" : { "type" : "string", "store" : true }, "dat_sover" : { "type" : "string", "store" : true }, "hard_code" : { "type" : "string", "store" : true }, "home_number" : { "type" : "string", "store" : true }, "latitude" : { "type" : "string", "store" : true }, "longitude" : { "type" : "string", "store" : true }, ...
3-мысал: Астана қаласында жасалған қылмыстық істер бойынша деректер жиынтығынан алғашқы 5 жазбаны алу үшін, size параметрінің мәнін көрсетіңіз:
/api/v4/astana_kalasynyn_kylmystyk_kuk1/v1?source={"size": 5}
* жиынтықтыңбірденаса нұсқалары бар болса, Сіз Сізге қажет нұсқасына ауыстыруыңызға болады, мысалы:
Жауап:
[ { "dat_sover" : "01.01.2016", "street" : "ДОСТЫЌ", "stat" : "ст.293 ч.2", "time_period" : "1", "organ" : "УВД районаЕсиль", "crime_code" : "2930", "hard_code" : "2", "month" : "1", "longitude" : "71.434872580000004", "year" : "2016", "city_code" : "г. Астана", "ud" : "167115030000038", "latitude" : "51.126707959999997", "objectid" : "2316830", "home_number" : "13", "reg_code" : "РайонЕсил" }, { "dat_sover" : "01.01.2016", "street" : "САУРАН", "stat" : "ст.190 ч.1", "time_period" : "3", "organ" : "УВД районаЕсиль", "crime_code" : "1900", "hard_code" : "1", "month" : "1", "longitude" : "71.422323582999994", "year" : "2016", "city_code" : "г. Астана", "ud" : "157115030024346", "latitude" : "51.121251012999998", "objectid" : "2139389", "home_number" : "6/1", "reg_code" : "РайонЕсил" }, ...
4-мысал: Астана қ. бойынша алғашқы 5 қылмыстық істерді өткізіп жіберіп, 3 жасалған қылмыстық істерін алу үшін from параметрін көрсетіңіз:
/api/v4/astana_kalasynyn_kylmystyk_kuk1/v1?source={"from":5, "size": 3}
Жауап:
[ { "dat_sover" : "01.01.2016", "street" : "МЈСКЕУ", "stat" : "ст.188 ч.1", "time_period" : "1", "organ" : "СарыаркинскийРУВД", "crime_code" : "1880", "hard_code" : "2", "month" : "1", "longitude" : "71.397837250999999", "year" : "2016", "city_code" : "г. Астана", "ud" : "167113030000156", "latitude" : "51.180052580000002", "objectid" : "860949", "home_number" : "14/3", "reg_code" : "РайонСарыарка" }, { "dat_sover" : "01.01.2016", "street" : "КОНСТИТУЦИИ", "stat" : "ст.191 ч.1", "time_period" : "1", "organ" : "СарыаркинскийРУВД", "crime_code" : "1910", "hard_code" : "2", "month" : "1", "longitude" : "71.393267264000002", "year" : "2016", "city_code" : "г. Астана", "ud" : "167113030000082", "latitude" : "51.195856544999998", "objectid" : "1932847", "home_number" : "19", "reg_code" : "Район Сарыарка" }, ...
5-мысал:Тармақтар бойынша іздеу: Астана қаласы бойынша Иманов көшесінде жасалған қылмыстық істер, сондай-ақ 2 қылмыстық ауырлығымен тізбесін көрсету.
/api/v4/astana_kalasynyn_kylmystyk_kuk1/v1?source={ "size":100, "query": { "bool":{ "must":[ {"match":{"hard_code": "2"}}, {"match":{"street": "Иманова"}} ] } } }
"hard_code" тармағы «2» тармақшасын және "street" тармағы «Иманова» тармақшасын қамтитын объектілерді іздеу жүргізіледі. Жауап екі шарт бірдей орындалатын барлық объектілерді қамтиды. Тармақтардың атауларын, сондай-ақ олардың түрлерін 1-мысалды пайдалана отырып анықтауға болады.
Жауап:
[ { "dat_sover" : "18.02.2016", "street" : "ИМАНОВА", "stat" : "ст.188 ч.1", "time_period" : "1", "organ" : "Алматинский РУВД", "crime_code" : "1880", "hard_code" : "2", "month" : "2", "longitude" : "71.444085013999995", "year" : "2016", "city_code" : "г. Астана", "ud" : "167111030008206", "latitude" : "51.164931746000001", "objectid" : "1942307", "home_number" : "21", "reg_code" : "Район Алматы" }, { "dat_sover" : "22.05.2016", "street" : "ИМАНОВА", "stat" : "ст.120 ч.1", "time_period" : "1", "organ" : "Алматинский РУВД", "crime_code" : "1200", "hard_code" : "2", "month" : "5", "longitude" : "71.434266149999999", "year" : "2016", "city_code" : "г. Астана", "ud" : "167111030026076", "latitude" : "51.163761094000002", "objectid" : "2431516", "home_number" : "9", "reg_code" : "Район Алматы" }, ...
6-мысал: geoposition тармағында координаттарынан 10 км радиусында, Ақмола облысында (51.608524, 68.171934) орналасқан ҚР медициналық ұйымдарын алу (егер тармақ түрі жиынтықта «geoposition» ретінде белгіленген болса, пайдаланылған болуы мүмкін):
/api/v4/medorg/v1?source={ "size":100, "query": { "filtered": { "query":{ "bool":{ "must":[ {"match":{ "address": "Акмолинская" }} ] } }, "filter": { "geo_distance": { "distance": "10km", "geoposition": { "lat": 51.608524, "lon": 68.171934 } } } } } }
Жауап:
[ { "region" : "Акмолнская область", "id" : 148, "address" : "Акмолинская область, Атбасарский район, село Самарка", "geoposition" : "51.602993, 68.032539", "name" : "Самарский МП" }, { "region" : "Акмолнская область", "id" : 125, "address" : "Акмолинская область, Атбасарский район, село Сергеевка", "geoposition" : "51.653683, 68.198503", "name" : "Сергеевская ВА" }, ...
7-мысал: geoposition тармағында координаттардан (42.359461, 69.622625) 1200 м радиусында Оңтүстік Қазақстан облысында орналасқан ҚР барлық медициналық ұйымдарын және осы координаттардан алшақтығы бойынша сұрып талғандарды көрсету (егер тармақ түрі жиынтықта «geoposition» ретінде белгіленген болса, пайдаланылған болуы мүмкін):
/api/v4/medorg/v1?source={ "size":100, "query": { "filtered": { "query":{ "bool":{ "must":[ {"match":{ "region": "Южно-Казахстанскаяобласть" }} ] } }, "filter": { "geo_distance": { "distance": "1200m", "geoposition": { "lat": 42.359461, "lon": 69.622625 } } } } }, "sort": [{ "_geo_distance": { "geoposition": { "lat": 42.359461, "lon": 69.622625 }, "order": "asc", "unit": "m" } } ] }
Жауап:
[ { "region" : "Южно-Казахстанская область", "id" : 3178, "address" : "г.Шымкент, мкрНурсат, стр 125/1", "geoposition" : "42.359461, 69.622625", "name" : "ГККП " }, { "region" : "Южно-Казахстанская область", "id" : 3230, "address" : "г.Шымкент, мкрНурсат б /н", "geoposition" : "42.358324, 69.627430", "name" : "ГКП на ПХВ " }, ...
8-мысал:Тармақтарбойыншаіздеу: тізімдіgeopositionтармағындакоординаттардан(42.358324, 69.627430)алшақтығыбойыншашығару(егер тармақ түрі жиынтықта «geoposition» ретінде белгіленген болса, пайдаланылған болуы мүмкін).
/api/v4/medorg/v1?source={ "size":100, "query": { "bool":{ "must":[ {"match": {"region": "Южно"}}, {"match": {"address": "Шымкент"}} ] } }, "sort": [{ "_geo_distance": { "geoposition": { "lat": 42.358324, "lon": 69.627430 }, "order": "asc", "unit": "km" }] }
Жауап:
[ { "region" : "Южно-Казахстанскаяобласть", "id" : 3204, "address" : "г. Шымкент, ул. ЖибекЖолыб/н", "geoposition" : "42.330978, 69.626532 ", "name" : "ГККП " }, { "region" : "Южно-Казахстанская область", "id" : 3229, "address" : "г. Шымкентул. Толстого б/н", "geoposition" : "42.320622, 69.620595", "name" : "Шымкентская городская станция скорой медицинской помощи" }, ...
9-мысал:Айқын емесіздеу(FuzzySearch).
Егер барлық тармақтар бойынша іздеу керек болса, fields параметрі бірнеше тармақтардың, сонымен қатар "_all" атауын .
fuzziness параметрі (редакциялық айырмашылығы) үнсіз келісім бойынша 2-ге тең
Айқын емес іздеу бойынша неғұрлы мегжей-тегжейлі ақпаратты elastic search ресми құжаттамасынан табуға болады.
1-сұрау салу:
Осы сұрау салу берілген деректер жиынында барлық тармақтар бойынша сөздерді анық іздемейді.
/api/v4/medorg/v1?source={ "size":2, "query": { "fuzzy_like_this" : { "fields" : ["_all"], "like_text" : "Астни" } } }
- жауап:
[ { "region" : "Астана", "id" : 845, "address" : "ул.Сарыарка", "geoposition" : "51.076148, 71.424524", "name" : "ГУ " }, { "region" : "Астана", "id" : 873, "address" : "микрорайон 3", "geoposition" : "51.147495, 71.471863", "name" : "ТОО « АкадемияортопедииАстана»" } ]
2-сұраусалу: fuzziness парметрін қолданудың мысалы:
/api/v4/medorg/v1?source={ "size":3, "query": { "fuzzy_like_this" : { "fields" : ["region"], "like_text" : "Астани", "fuzziness" : "1" } } }
2-жауап:
[ { "region" : "Астана", "id" : 820, "address" : "ул. Т. Рыскулова,8", "geoposition" : "51.083505, 71.413128", "name" : "Центр семейного здоровья «Шипагер»" }, { "region" : "Астана", "id" : 865, "address" : "ул. Жибек жолы,76", "geoposition" : "51.179823, 71.419469", "name" : "ТОО «ФрезениусМедикалКейрКазахстан»" }, { "region" : "Астана", "id" : 817, "address" : "ул. Абылайхана,30", "geoposition" : "51.128850, 71.461773", "name" : "ЦПМСМ " } ]
10-мысал: Геолокация бойынша іздеу қисында суындағы айқын емес іздеу (Fuzzy Search)
Барлық тармақтар бойынша «Астани» сөзінен 2 редакциялық қашықтықтағы (fuzziness) сөздердіқамтитын объектілерді іздеу іске асырылады. Жауап (51.168803, 71.444856) geoposition тармағында координаттардан алшақтығы бойынша сұрыпталған объектілердің тізімі түрінде ұсынылады.
/api/v4/medorg/v1?source={ "size":100, "query": { "fuzzy_like_this" : { "fields" : ["_all"], "like_text" : "Астани" } }, "sort": [{ "_geo_distance": { "geoposition": { "lat": 51.168803, "lon": 71.444856 }, "order": "asc", "unit": "km" } }] }
Жауап:
[ { "region" : "Астана", "id" : 836, "address" : "ул. Кенесары 82", "geoposition" : "51.167188, 71.441343", "name" : "ТОО " }, { "region" : "Астана", "id" : 815, "address" : "ул. Сембинова,4/1", "geoposition" : "51.166105, 71.448100", "name" : "ГКП на ПХВ «Городская поликлиника №8»" }, ...
Detailed Api
Detailed Api сипаттамасы
Осы сұраулар сұралып отырған жиындар туралы толығырақ ақпаратты алуға мүкіндік береді
/api/detailed/dataset?source={Query in Json Object}
/api/detailed/dataset/version?source={Query in Json Object}
Берілген сұрау dataset деректер жиыны бойынша іздеуді жүзеге асырады, бұл кезде іздеу және сүзгілеудің қалай жүргізілетіндігін сипаттайтын source параметрі беріледі.
version міндетті емес атрибут болып табылады
Сервердің жауабы JSON форматында қайтарылады, ол жиындар таңдауынан немесе қату туралы хабарламадан тұрады.
Төменде сұраулар мысалы келтірілген.
1 мысал:
Дәріханалар анықтамалығынан бөлшек таңдауды алу:
Сұрау келесі түрде көрсетіледі:
/api/detailed/pharmacy/v1
Жауабы:
{ "totalCount" : 56, //Жалпы объектілер саны "data" : [ { //Объектілер ауқымы "_index" : "pharmacy", //Деректер жиынының индексі "_type" : "v1", //Деректер жиынының нұсқасы "_id" : "28", //Бірегеу сәйкестендіргіш "id" : 28, "Name" : "Гиппократ № 30", "Region" : 17108, "geoposition" : "51.169886,71.436908", "Address" : "г. Астана, ул. Абая д.59" }, ...
2 мысал:
Осылай жиындар алаңдары бойынша агрегация жасауға болады. Толығырақ elasticsearch ресми құжаттамасында.
2012-2013 оқу жылындағы орта білім сапасы коэффициентін алу:
Сұрау келесі түрде көрсетіледі:
/api/detailed/sch_rating/data?source={ "aggs" : { "average_quality" : { "avg" : { "field" : "KnowledgeQuality20122013" } } } }
Жауабы:
{ "totalCount": 70, "data": [ { "UNTresults": "89.05", "СonformityLevel": "1 из 1", "KnowledgeQuality20122013": "62.3", "_index": "sch_rating", "FullName": "№17 школа-гимназия", "_type": "data", "ID": "16", "_id": "16" }, ... "aggregations": { "average_quality": { "value": 55.2250723907913 //Cредний коэффициент качества образования } } }
Мета ақпарат
Берілген сұраулар қолданушыларға олардың қызықтыратын жиындары бойынша мета ақпараттарды алуға мүмкіндік береді.
/meta/dataset/version
Берілген сұрау dataset және version нұсқасындағы деректер жиыны туралы метадеректерді алады.
Сервердің жауабы JSON форматында қайтарылады, ол объектіден немесе қату туралы хабарламадан тұрады.
Төменде сұрау мысалы көрсетілген.
Мысалы:
Дәріхана жиыны бойынша мета ақпаратты алу:
Сұрау келесі түрде көрсетіледі:
/meta/pharmacy/v1
Жауабы:
{ "apiUri" : "pharmacy" "nameRu" : "Аптеки", "nameEn" : "Pharmacy", "nameKk" : "Дәріханалар", "descriptionRu" : "Данный набор содержит наименования аптек, коды ...", "descriptionEn" : "This set contains names of pharmacies, codes of ...", "descriptionKk" : "Осы жиынтық дәріханалар, өңірлер кодтары мен ...", "responsible" : { "phone" : "+7 123 456 78 90", "phone" : "test@test.kz", "fullnameKk" : "Дәріханалар", "fullnameEn" : "Pharmacy", "fullnameRu" : "Аптеки" }, "createdDate" : "2015-01-05T13:53:19.702Z", "modifiedDate" : "2015-01-05T13:53:19.702Z", "fields" : { "id" : { "labelKk" : "Id", "labelEn" : "Id", "type" : "Int", "labelRu" : "Id" }, "Name" : { "labelKk" : "Name", "labelEn" : "Name", "type" : "String", "labelRu" : "Name" }, "Region" : { "labelKk" : "Region", "labelEn" : "Region", "type" : "Int", "labelRu" : "Region" }, "geoposition" : { "labelKk" : "Geoposition", "labelEn" : "Geoposition", "type" : "Geoposition", "labelRu" : "Geoposition" }, "Address" : { "labelKk" : "Address", "labelEn" : "Address", "type" : "String", "labelRu" : "Address" } } }