Эластичный поиск NEST (.net) SQL

Я пытаюсь использовать https://www.elastic.co/guide/en/elasticsearch/reference/current/xpack-sql.html с клиентом .net NEST. Есть идеи как? Я нигде не вижу руководства.

1
0
1 554
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть несколько способов написать SQL и вернуть результаты из Elasticsearch.

Используйте драйвер ODBC

Установите драйвер 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 является платиновой функцией, для которой требуется платиновая или корпоративная лицензия.

Используйте API-интерфейс SQL

Используйте 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 11.12.2020 03:44

Столбцы и строки @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) { ... }.

Russ Cam 14.12.2020 00:49

Клиент высокого уровня всегда ожидает десериализации ответа из JSON. Однако вы можете заставить API возвращать формат CSV и использовать низкоуровневый клиент для возврата ответа в виде StringResponse, самостоятельно обрабатывая чтение каждой строки CSV.

Russ Cam 14.12.2020 00:51

Есть ли способ указать формат как JSON в API Elasticsearch SQL?

xQueryUser 27.10.2021 17:19

Используя REST API, вы можете выполнить POST/_sql?format=json, который вернет столбцы и строки в формате JSON. Мне было интересно, как указать этот формат с помощью NEST API.

xQueryUser 27.10.2021 20:01

Другие вопросы по теме