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>";
查询结果

| address | age | bank | name | phone |
|---|---|---|---|---|
| 安徽省哈尔滨清浦区牙买加 | 35 | 中国工商银行 | 郎英 | 15038204071 |
| 河南省西宁秀英区佛得角 | 31 | 中国工商银行 | 易桂英 | 15618616204 |
| 安徽省香港金平区圣赫勒拿 | 66 | 中国银行 | 蒋淑英 | 13308464076 |
| 山西省南宁高新开发区坦桑尼亚 | 60 | 广发银行 | 汤桂英 | 13259881441 |
感谢大家,更多功能,请参考es官方文档
文档更新时间: 2020-09-10 17:15 作者:young