Я пытаюсь использовать https://www.elastic.co/guide/en/elasticsearch/reference/current/xpack-sql.html с клиентом .net NEST. Есть идеи как? Я нигде не вижу руководства.
Есть несколько способов написать SQL и вернуть результаты из Elasticsearch.
Установите драйвер ODBC и используйте 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 является платиновой функцией, для которой требуется платиновая или корпоративная лицензия.
Используйте Elasticsearch SQL API, который доступен в NEST, клиенте .NET. Пример
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 является частью функций дистрибутива по умолчанию.
Столбцы и строки @SoftwarePPNV сопоставляются с ответом JSON от API: astic.co/guide/en/elasticsearch/reference/current/… . .Columns
иметь имя и тип поля, которые можно использовать для определения того, как читать значения в .Rows
, например. если первый столбец имеет тип данных text
, то первое значение в каждой строке можно прочитать с помощью r[0].As<string>()
, где r
— текущее значение перечисления по .Rows
, т. е. foreach(var r in response.Rows) { ... }
.
Клиент высокого уровня всегда ожидает десериализации ответа из JSON. Однако вы можете заставить API возвращать формат CSV и использовать низкоуровневый клиент для возврата ответа в виде StringResponse
, самостоятельно обрабатывая чтение каждой строки CSV.
Есть ли способ указать формат как JSON в API Elasticsearch SQL?
Используя REST API, вы можете выполнить POST/_sql?format=json, который вернет столбцы и строки в формате JSON. Мне было интересно, как указать этот формат с помощью NEST API.
Как на самом деле прочитать строку? Никак не могу найти на него документацию.