前提条件:

首先要将Oracle的数据导入到Elasticsearch中。之前的步骤以及总结在下面的博客中:使用logstash将Oracle数据导入到Elasticsearch

一、在Elasticsearch中对以导入的表创建别名

es的_count接口_KONGA

二、在KONGA中创建CONSUMER

在导航栏中选择创建CONSUMER,打开以下界面:

es的_count接口_elasticsearch_02

点击CREATE CONSUMER,输入我们需要的username:

es的_count接口_elasticsearch_03

然后创建group,Group name 为 user_AI 后面我们会用到:

es的_count接口_es的_count接口_04

三、在KONGA中创建SERVICES

在导航栏中选择创建SERVICES,打开以下界面:

es的_count接口_GET请求_05

我们点击 ADD NEW SERVICE,打开以下选项卡:

es的_count接口_elasticsearch_06

其中按照我们需要填入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 的路径:

es的_count接口_api_07

对于Host,其中没有写具体的IP,而是es-cluster,其来源:

es的_count接口_api_08


detail --> Targets 可以看到他可以访问的IP,这里就包含了我们之前Elasticsearch 存在的IP地址:

es的_count接口_KONGA_09

四、对我们创建的Service新建Route

在此Server中新建Route  -->  course

es的_count接口_api_10

自定义Paths,后面访问使用此路径,记得String Path选为YES,Protocols为http,调用的方法选择GET。

es的_count接口_GET请求_11

注意:很多参数需要我们写好以后回车才能存入,如果存在写好了对应参数,结果关掉以后没有更新,应该就是写好后未回车确认。

五、在创建好的Service中建立3个Plugins

点击对应Service下面的Plugins,打开以下界面:

es的_count接口_es的_count接口_12

A.编辑Key Auth,这里的key names填写apikey:

es的_count接口_GET请求_13

B.在Transfoemations中新建一个Request Transformer:

es的_count接口_api_14

编辑Request Transformer,写入Request,看要返回哪些数据:

es的_count接口_api_15

样例:

_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:

es的_count接口_elasticsearch_16

编辑Acl:

es的_count接口_GET请求_17

其中white list中填写的 “user_AI” 是我们在第二步时创建的group name。为了安全性只允许这个group进行访问。
三个plugins添加好后如下图:

es的_count接口_api_18

六、测试API是否可用

最后API访问路径如下:

http://192.168.102.25:8000/sugon/gxjg_jzgjcsjzlb?apikey=WxNsQstXvqxLsPl3JTT8iC65Kalt5HNU

一定要加上 ?apikey=WxNsQstXvqxLsPl3JTT8iC65Kalt5HNU  其中的值在CONSUMERS -> VR-AI教育->Credentials->API KEYS中看:

es的_count接口_GET请求_19

测试结果:

es的_count接口_es的_count接口_20

可以看到使用该路径就可以成功获取到之前导入到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
                }
            }    }
}