js(jquery方式) 直接访问 elasticsearch

闻人飞翼
2023-12-01

尝试了下,浏览器直接通过js操作elasticsearch。这种方式无需后台服务器了,而且程序业务逻辑都在js里面,代码更新直接替换 原有js和html页面即可,快速便捷,但安全性没有任何保证。

安全方面,前端业务逻辑部分,可以采用压缩加混淆方式;

                后端数据请求可以采用nginx进行代理转发,然后使用nginx-lua 编写对应权限判断代码,进行请求权限控制。

<!DOCTYPE html>
<html lang="UTF-8">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdn.bootcss.com/elasticsearch/14.1.0/elasticsearch.jquery.js"></script>
</head>
<body>
<div id="message">

</div>
</body>

<script>
    var client = new $.es.Client({
        //连接的服务器
        hosts: '192.168.251.7:9200'
    });

    // 获取状态,参数可选,可以只传递一个回调
    client.cluster.health(function (err, resp) {
        if (err) {
            $("#message").append(err.message + "<br\>");
            console.error(err.message);
        } else {
            console.dir(resp);
            $("#message").append("server status: " + resp.status + "<br\>");
        }
    });

    var data = {
        title: 'test!',
        content: 'It all started when...',
        date: '2018-03-11'
    };

    // 建立索引, 添加数据
    client.index({
        index: 'blog',
        type: 'post',
        id: 1,
        body: data
    }, function (err, resp) {
        console.dir(resp);
        console.dir(err);
        $("#message").append("add data result: " + resp.result + "<br\>");
    });

    // 搜索文档
    client.search({
        index: 'blog',
        size: 50,
        body: {
            query: {
                match: {
                    title : 'test'
                }
            }
        }
    }).then(function (resp) {
        console.dir(resp);
        $("#message").append("search data total num : " + resp.hits.total + "<br\>");
    });

</script>

</html>
 类似资料: