Теперь в продуктах FastReport .NET, Core, Mono, OpenSource появилась возможность подключения к Elasticsearch. Elasticsearch – масштабируемая утилита полнотекстового поиска и аналитики, которая позволяет быстро в режиме реального времени хранить, искать и анализировать большие объемы данных.
Из Elasticsearch можно получить данные в формате JSON. А в FastReport .NET уже есть подключение к JSON и использовать данные в этом формате довольно удобно. Поэтому этот формат будет использоваться в качестве прослойки между FastReport .NET и Elasticsearch.
Важно! В FastReport реализовано только подключение Elasticsearch, как источника данных, без возможности поиска в хранимых внутри него данных.
Для создания подключения к Elasticsearch нужно кликнуть на вкладку «Данные» в дизайнере, выбрать пункт «Добавить источник данных». В появившемся окне нажать на кнопку «Новое подключение». Для подключения необходим “endpoint Elasticsearch” и указание заголовков для доступа к данным, например, авторизационные данные (для этого есть сетка ниже). Если доступ к данным был получен, то после нажатия кнопки «Далее» появится список таблиц. Необходимо поставить галочку, которая находится левее названия таблицы для успешного подключения. После этого настройка подключения будет завершена.
После подключения источника данных необходимо привязать к нему бэнд.
В итоге в отчете будут использованы данные из созданного подключения к Elasticsearch.
Если необходимо отобрать данные для подключения, то можно составить GET запрос и использовать его как строку подключения к JSON. В примере ниже показан поиск записей, которые содержат в поле «name» слово «Bruno» и находятся в индексе (так называются таблицы в Elasticsearch) «demo». Также если записей будет больше 10, то необходимо будет добавить параметр «size» и указать в нем нужное количество записей.
Также в отчете нужно указать имя источника данных в свойстве DataSource бэнда и после этого данные будут извлекаться из источника в отчет.
Пример подключения к Elasticsearch из кода:
// create ESDataSourceConnectionStringBuilder instance ESDataSourceConnectionStringBuilder builder = new ESDataSourceConnectionStringBuilder(); // set Elasticsearh end point builder.EndPoint = "http://192.168.1.194:9200/"; // create ESDataSourceConnection instance var connection = new ESDataSourceConnection(); //set connection string connection.ConnectionString = builder.ConnectionString; // init all table connection.CreateAllTables(); // set name connection connection.Name = "NewConnection"; // create Report instance var report = new Report(); // add connection to report report.Dictionary.Connections.Add(connection); // set connection show connection.Enabled = true; // choose table with name "demo" and connect it to the report foreach(TableDataSource table in connection.Tables) { if (table.Name == "demo") table.Enabled = true; }
В результате выполнения этого кода мы сможем увидеть в дизайнере новую таблицу «demo» в списке доступных подключений.
Теперь вы больше знаете о возможностях создания подключения к базе данных Elasticsearch. При необходимости отбора данных можете воспользоваться подключением к JSON.