sql支持

es有sql支持。我们可以使用sql来查询里面的数据。emmm
大家可以自己弄个ui功能。
当然了,我这边就不搞花里胡哨的ui了。

我们我这边创建了个索引为 ‘test_sql’ 并向里面插入了99条数据

我们先通过es自带sql客户端查询。
elasticsearch-sql-cli.bat(和启动es一个目录)

select count(*) from test_sql;


select sum(age) from test_sql;

我们通过 接口形式查询。我们用postman
请求地址:http://127.0.0.1:9200/_sql

{
  "query": "SELECT *  FROM test_sql where  address  like '%新疆%' limit 10"
}


{
    "columns": [
        {
            "name": "address",
            "type": "text"
        },
        {
            "name": "age",
            "type": "long"
        },
        {
            "name": "bank",
            "type": "text"
        },
        {
            "name": "name",
            "type": "text"
        },
        {
            "name": "phone",
            "type": "text"
        }
    ],
    "rows": [
        [
            "新疆维吾尔自治区长沙南溪区瓦里斯和富士那群岛",
            42,
            "兴业银行",
            "姚欢",
            "14581757637"
        ],
        [
            "新疆维吾尔自治区济南长寿区阿曼",
            8,
            "中国建设银行",
            "单淑华",
            "13392468923"
        ],
        [
            "新疆维吾尔自治区广州吉利区新加坡",
            45,
            "华夏银行",
            "沿洋",
            "18698375715"
        ],
        [
            "新疆维吾尔自治区郑州孝南区塞浦路斯",
            53,
            "浙商银行",
            "王秀芳",
            "13192327092"
        ]
    ]
}

用php查询:

        $sql = "SELECT *  FROM test_sql where  address  like '%新疆%' limit 10";
        $data = json_encode(['query' => $sql], JSON_UNESCAPED_UNICODE);
        $json = file_get_contents('http://127.0.0.1:9200/_sql', 0, stream_context_create(array(
            'http' => array(
                'header' => "Content-Type: application/json",
                'content' => $data
            )
        )));
        dump(json_decode($json, true));

允许我犯懒一下,这么查询也是可以的。懒得再创建模板了。

        $sql = "SELECT *  FROM test_sql where name like '%英%'";
        $data = json_encode(['query' => $sql], JSON_UNESCAPED_UNICODE);
        $json = file_get_contents('http://127.0.0.1:9200/_sql', 0, stream_context_create(array(
            'http' => array(
                'header' => "Content-Type: application/json",
                'content' => $data
            )
        )));
        $res = json_decode($json, true);

        echo "<title>es数据</title>";
        echo '<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />';
        echo "<table style='table-layout: fixed;' border='1' width='100%' cellspacing='0' cellpadding='2'>";
        foreach ($res['columns'] as $val) {
            echo "<th>" . $val['name'] . "</th>";
        }

        foreach ($res['rows'] as $rows) {
            echo "<tr>";
            foreach ($rows as $val) {
                echo "<td>$val</td>";
            }
            echo '</tr>';
        }
        echo "</table>";

查询结果

addressagebanknamephone
安徽省哈尔滨清浦区牙买加35中国工商银行郎英15038204071
河南省西宁秀英区佛得角31中国工商银行易桂英15618616204
安徽省香港金平区圣赫勒拿66中国银行蒋淑英13308464076
山西省南宁高新开发区坦桑尼亚60广发银行汤桂英13259881441

感谢大家,更多功能,请参考es官方文档

文档更新时间: 2020-09-10 17:15   作者:young