可以直接使用sql语句操作es数据库,比如查询people索引库
也可以输出json格式
也可以输出csv格式
使用接口调用工具(ApiPost),也可以请求到结果:
在.NetCore程序中使用sql查询数据
using Newtonsoft.Json;
using System;
using System.Data;
using System.IO;
using System.Net;
using System.Text;
namespace ElasticSearch
{
public class SendHttp
{
public static string url = "http://localhost:9200/_xpack/sql?format=csv";
public static DataTable GetDataBySql(string sql)
{
DataTable dataTable = new DataTable();
try
{
//获取数据
string jsonstr = Post(url, new QueryParam() { query = sql });
//按行拆分
var lines = jsonstr.Split("\r\n");
//获取表头字段
foreach (string item in lines[0].Split(","))
{
//可以做类型转换
dataTable.Columns.Add(item, typeof(System.String));
}
//表数据
for (int i = 1; i < lines.Length - 1; i++)
{
var filedvalue = lines[i].Split(",");
var row = dataTable.NewRow();
for (int j = 0; j < dataTable.Columns.Count; j++)
{
row[j] = filedvalue[j];
}
dataTable.Rows.Add(row);
}
}
catch (Exception)
{
throw;
}
return dataTable;
}
public static string Post(string url, QueryParam queryParam)
{
HttpWebRequest request = null;
try
{
request = (HttpWebRequest)WebRequest.Create(url);
var data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(queryParam));
request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";
request.Timeout = 90000;
//设置入参
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
//发送请求
var response = (HttpWebResponse)request.GetResponse();
//读取出参
using (var resStream = response.GetResponseStream())
{
using (var reader = new StreamReader(resStream, Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
}
catch (Exception ex)
{
return null;
}
finally
{
//释放链接
if (request != null)
{
request.Abort();
}
}
}
}
public class QueryParam
{
public string query { get; set; }
}
}
main方法:
class Program
{
static void Main(string[] args)
{
//使用sql查询数据
var data = SendHttp.GetDataBySql("select * from people");
Console.ReadLine();
}
}
执行结果:
这样就把数据放到一个DataTable容器里面了。