前提条件:
首先要将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
}
} }
}