第96篇ES与一对一的整合及图像识别跨域问题解决

    xiaoxiao2021-03-26  4

    关键词:ES与一对一的整合,图像识别跨域问题解决

    ES与一对一的整合

    1.1 在备份服务器上进行整合

    1备份老师端如下:

    https://123.57.206.36:9006/demos/index.html?roomid=1912&t=300&imgUrl=http://123.57.206.36:8003/uploadfiles/2016/11/1478143874gHeUlH.jpeg

    2)本地如下:

    https://localhost:9006/demos/index.html?roomid=1912&t=300&imgUrl=http://123.57.206.36:8003/uploadfiles/2016/11/1478143874gHeUlH.jpeg

     

    3)需求如下:

    1.2 开发

    1)先来一个span

    <span id="ES_answer"class="studentStatues studentOffline">搜答案</span>

    2)点击获取图像URL

    实现了,代码如下:

    function getAnsES(){

                      varurl = $("#qustionImg").attr("src");

        if (url =="") {

           MyAlert("问题图片不存在", "false", "", "","auto", "auto", 1, 1, {

                text:"我知道了",

               function() {}

            });

            return;

        }

        //var url ='http://123.57.206.36:8003/uploadfiles/2016/11/1478143874gHeUlH.jpeg';

       console.log('url-->',url);

    }

    3图像识别代码整合到搜索接口中去(生产上)

     现在的策略是写两个接口:一是图像识别接口,二是ES检索接口,具体如下:

    a.)文字检索接口,如下:

    http://api.dz101.com/v1/elasticsearch/search/searchs?keyword=1

    注:我把接口参数改为一个了,类型type=1去掉了。

    b.)图像识别接口

    需要传一个参数$img_upload,用法如下:

    http://api.dz101.com/v1/elasticsearch/imgReco/imgRecos?img_upload=http://upload.dz101.com/uploadfiles/2017/04/1491828189mBBNL0.jpg

    效果如下:

    4测试上

    http://192.168.1.14:8004/v1/elasticsearch/imgReco/imgRecos?img_upload=http://upload.dz101.com/uploadfiles/2017/04/1491828189mBBNL0.jpg

    http://192.168.1.14:8004/v1/elasticsearch/search/searchs?type=1&keyword=高中物理

    1.3 elasticsearchnodejs客户端

    网址如下:https://github.com/elastic/elasticsearch-js

    注:它的研究方法可以参考elasticsearch-php来搞,反正都是操作elasticsearch的。

    1备用服务器上有问题图片

    老师端:

    https://123.57.206.36:9006/demos/index.html?roomid=1912&t=300&imgUrl=http://upload.dz101.com/uploadfiles/2017/04/1491828189mBBNL0.jpg

    学生端:

    https://123.57.206.36:9006/demos/student.html#1912

    1.4 测跨域端口

    1正视一个问题

      启动node server.jsapp.js,先杀死旧进程,之后,再用如下命令启动进程,如下:

    a 查找那个进程

    ps-aux |grep node

    b杀死上面的那个进程(22147),程序如下:

    kill-9 22147

    c)启动进程---注:前提是进入那个文件夹

    nohupnode server.js &

    nohupnode app.js &

    2一个bug

    POSThttps://stt.dz101.com:3636/searchWithImg/http:,,upload.dz101.com,uploadfiles,2017,04,1491828189mBBNL0.jpgnet::ERR_INSECURE_RESPONSE

    这个问题是拦截造成的,修改方法如下:

    注:先运行一个跨域,把拦截跳过去,就成。允许之后,如下:

    3跨域解决流程

    a.)描述:

      现在白板上用的是https的,但需要调用一些http的接口,这就涉及到跨域问题,解决办法是:在服务器端调用http的接口,之后,把数据返回。

    b.)看个例子---图像识别

    第一步:先给出一个图标+一个单击函数----------------------index.html

       <div class="connectionStatus">

                    <spanid="studentStatues" class="studentStatuesstudentOffline">等待学生

    上线</span>

                     <spanid="searchAns" class="studentStatues studentOffline"

    οnclick="getAnsES()">搜答案</span>

        </div>

    第二步:getAnsES()函数如下:----------------------index.html

    function getAnsES(errorCallBack) {

       var imgurl ='http://upload.dz101.com/uploadfiles/2017/04/1491828189mBBNL0.jpg';

        imgurl = imgurl.replace(/\//g, ",");

        $.post(assistBaseUrl+"/searchWithImg/"+ imgurl,

           function(data, status) {

               //alert("Data: " + data + "\nStatus: " + status);

               console.log("Data: " + data + "\nStatus: " +status);

           });

    }

    注:这个图片的地址是写死的,路走通了,后期慢慢搞。传之前,要对imgurl进行改变,把斜杠全替换为逗号。之后传给服务器,服务器接收如下。

    第三步:服务器接收------------------------------------app.js

    注:如果修改了app.js,用之前要重新启动,否则不生效。图像识别如下:

    app.post('/searchWithImg/:imageUrl',searchWithImg);

    注:这里面调用了一个图像识别接口(http://apis.baidu.com/idl_baidu/baiduocrpay/idlocrpaid)是http的,所以必须用这种方法返回数据。还有一点是怎么看返回数据日志,可以看一个nohup.out里面

    2017年4月06日星期四

    转载请注明原文地址: https://ju.6miu.com/read-600386.html

    最新回复(0)