【发布时间】:2020-12-10 15:28:49
【问题描述】:
我正在尝试使用https://www.elastic.co/guide/en/elasticsearch/reference/current/xpack-sql.html 使用 .net NEST 客户端。有什么想法吗?我真的没有在任何地方看到指南。
【问题讨论】:
标签: elasticsearch nest
我正在尝试使用https://www.elastic.co/guide/en/elasticsearch/reference/current/xpack-sql.html 使用 .net NEST 客户端。有什么想法吗?我真的没有在任何地方看到指南。
【问题讨论】:
标签: elasticsearch nest
您可以通过多种方式编写 SQL 并从 Elasticsearch 返回结果
Install the ODBC driver 并使用System.Data.Odbc.OdbcConnection 获取记录。例如
using var connection = new OdbcConnection("DSN=Local Elasticsearch");
connection.Open();
using var command = connection.CreateCommand();
command.CommandText = "SELECT * FROM my_index";
using var adapter = new OdbcDataAdapter(command);
var table = new DataTable();
adapter.Fill(table);
connection.Close();
// do something with data in table
注意ODBC driver is a platinum feature which requires a platinum or enterprise license。
使用在 .NET 客户端 NEST 上公开的 Elasticsearch SQL API。一个例子
var client = new ElasticClient();
var sqlResponse = client.Sql.Query(q => q
.Query("SELECT * from my_index")
);
foreach (var c in sqlResponse.Columns)
{
// do something with columns
}
foreach (var r in sqlResponse.Rows)
{
// do something with rows
}
SQL API 是默认分发功能的一部分。
【讨论】:
.Columns 具有名称和字段类型,可用于确定如何读取 .Rows 中的值,例如如果第一列是text 数据类型,则可以使用r[0].As<string>() 读取每一行中的第一个值,其中r 是枚举.Rows 的当前值,即foreach(var r in response.Rows) { ... }。
StringResponse 的形式返回响应,自己处理每个 CSV 行的读取。