前提条件:
首先要将Oracle的数据导入到Elasticsearch中。之前的步骤以及总结在下面的博客中:使用logstash将Oracle数据导入到Elasticsearch
一、在Elasticsearch中对以导入的表创建别名
二、在KONGA中创建CONSUMER
在导航栏中选择创建CONSUMER,打开以下界面:
点击CREATE CONSUMER,输入我们需要的username:
然后创建group,Group name 为 user_AI 后面我们会用到:
三、在KONGA中创建SERVICES
在导航栏中选择创建SERVICES,打开以下界面:
我们点击 ADD NEW SERVICE,打开以下选项卡:
其中按照我们需要填入Service的信息:
Name:sugon_course
Description:警察学院课程信息服务
Protocol:http
Host:es-cluster
Port:9200
Path:/gxjx_kcsjlb/doc/_search (具体访问路径)
注意:
Host中一般写 Elasticsearch 的IP,但是这里写es-cluster。端口也写访问Elasticsearch 的Port,上篇博客我们导入到 Elasticsearch 的路径:
对于Host,其中没有写具体的IP,而是es-cluster,其来源:
detail --> Targets 可以看到他可以访问的IP,这里就包含了我们之前Elasticsearch 存在的IP地址:
四、对我们创建的Service新建Route
在此Server中新建Route --> course
自定义Paths,后面访问使用此路径,记得String Path选为YES,Protocols为http,调用的方法选择GET。
注意:很多参数需要我们写好以后回车才能存入,如果存在写好了对应参数,结果关掉以后没有更新,应该就是写好后未回车确认。
五、在创建好的Service中建立3个Plugins
点击对应Service下面的Plugins,打开以下界面:
A.编辑Key Auth,这里的key names填写apikey:
B.在Transfoemations中新建一个Request Transformer:
编辑Request Transformer,写入Request,看要返回哪些数据:
样例:
_source_includes:kch,kcmc,kcywmc,xf,zhxs,zxs,llxs,syxs,kcjj,jc,cksm,kcfzrh,kcksdwh,sjxs,kcjxdg,kcjbm,kclbm,kclxm,sftk,tkrqsj,ksrqsj,scbz,kcxz,kkbmdm
然后我们再使用路径调用时可以有选择的返回数据。
C.新建ACL:
编辑Acl:
其中white list中填写的 “user_AI” 是我们在第二步时创建的group name。为了安全性只允许这个group进行访问。
三个plugins添加好后如下图:
六、测试API是否可用
最后API访问路径如下:
http://192.168.102.25:8000/sugon/gxjg_jzgjcsjzlb?apikey=WxNsQstXvqxLsPl3JTT8iC65Kalt5HNU
一定要加上 ?apikey=WxNsQstXvqxLsPl3JTT8iC65Kalt5HNU 其中的值在CONSUMERS -> VR-AI教育->Credentials->API KEYS中看:
测试结果:
可以看到使用该路径就可以成功获取到之前导入到Elasticsearch中的数据了。
拓展:
这里分享一下最后编辑的API文档格式,可以做个参考。
3、课程数据信息
请求方式:GET
请求路径:/sugon/gxjg_jzgjcsjzlb
字段说明:
字段 |
类型 |
说明 |
备注 |
数据情况 |
KCH |
string |
课程号 |
|
有 |
KCMC |
string |
课程名称 |
|
有 |
KCYWMC |
string |
课程英文名称 |
|
无 |
XF |
int |
学分 |
|
有 |
ZHXS |
string |
周学时 |
|
有 |
ZXS |
int |
总学时 |
|
无 |
LLXS |
int |
理论学时 |
|
无 |
SYXS |
int |
实验学时 |
|
无 |
KCJJ |
CLOB |
课程简介 |
|
无 |
JC |
CLOB |
教材 |
|
无 |
CKSM |
CLOB |
参考书目 |
|
无 |
KCFZRH |
string |
课程负责人号 |
|
无 |
KCKSDWH |
string |
课程开设单位号 |
|
有 |
SJXS |
int |
实践学时 |
|
无 |
KCJXDG |
string |
课程教学大纲 |
|
无 |
KCJBM |
string |
课程级别码 |
|
无 |
KCLBM |
string |
课程类别 |
|
无 |
KCLXM |
string |
课程类型 |
|
无 |
SFTK |
string |
是否停开 |
|
无 |
TKRQSJ |
string |
停开日期时间 |
|
无 |
KSRQSJ |
string |
开设日期时间 |
|
无 |
SCBZ |
string |
删除标志 |
|
无 |
KCXZ |
string |
课程性质 |
|
有 |
KKBMDM |
string |
开课学院代码 |
|
有 |
请求示例:
GET /sugon/gxjg_jzgjcsjzlb?size=1&apikey=XXXXXXXXXXX
返回示例:
{
"took":16,
"timed_out":false,
"_shards":{
"total":5,
"successful":5,
"failed":0
},
"hits":{
"total":4440,
"max_score":1,
"hits":[
{
"_index":"gxjx_kcsjlb_index",
"_type":"doc",
"_id":"bx080200",
"_score":1,
"_source":{
"kcjxdg":null,
"sjxs":0,
"scbz":null,
"kcxz":"必修课",
"kclxm":null,
"kkbmdm":"17",
"kcjbm":null,
"cksm":null,
"kcjj":null,
"ksrqsj":null,
"sftk":null,
"kclbm":null,
"jc":null,
"kcfzrh":null,
"tkrqsj":null,
"kch":"bx080200",
"zxs":null,
"kcksdwh":"17",
"llxs":16,
"syxs":0,
"kcywmc":null,
"zhxs":"4.0-0.0",
"kcmc":"人文素养系列讲座(创新实验班)",
"xf":1
}
}
}
}