Введение. В современном мире данные — это все, и с постоянно растущим объемом данных управление ими становится сложной задачей. Elasticsearch — один из таких мощных инструментов, который упрощает управление большими объемами данных. Elasticsearch — это распределенная система поиска и аналитики с открытым исходным кодом, предназначенная для быстрого хранения, поиска и анализа больших объемов данных почти в режиме реального времени. В этом руководстве мы сосредоточимся на том, как извлекать данные из MSSQL и сохранять их в Elasticsearch, а затем искать эти данные с помощью .NET 7 Web API и Entity Framework Core.
Пошаговое руководство:
Шаг 1. Установите Elasticsearch. Первым шагом является загрузка и установка Elasticsearch. Вы можете скачать Elasticsearch с официального сайта (https://www.elastic.co/downloads/elasticsearch). После загрузки следуйте инструкциям по установке Elasticsearch в вашей системе.
Шаг 2. Установите клиент Elasticsearch .NET. Далее нам нужно установить клиент Elasticsearch .NET. Вы можете установить его через диспетчер пакетов NuGet. Откройте Visual Studio и щелкните правой кнопкой мыши имя своего проекта в обозревателе решений. Нажмите «Управление пакетами NuGet», а затем выполните поиск «Elasticsearch.Net» и «NEST». Установите оба пакета.
Шаг 3. Подключение к MSSQL Server. Чтобы подключиться к MSSQL Server, нам необходимо установить пакет Entity Framework Core. Установите его через диспетчер пакетов NuGet. После установки создайте новый класс, производный от DbContext. В этом классе вам необходимо переопределить метод OnConfiguring для настройки подключения к базе данных. Например:
public class MyDbContext : DbContext { public DbSet<MyEntity> MyEntities { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("Data Source=<servername>;Initial Catalog=<databasename>;User ID=<username>;Password=<password>;"); } }
Шаг 4. Создайте индекс Elasticsearch. Чтобы хранить данные в Elasticsearch, нам сначала нужно создать индекс. Индекс представляет собой набор документов, которые имеют несколько схожие характеристики. В этом уроке мы создадим индекс под названием «myindex». Чтобы создать индекс, добавьте следующий код:
var settings = new ConnectionSettings(new Uri("http://localhost:9200")) .DefaultIndex("myindex"); var client = new ElasticClient(settings); if (!client.IndexExists("myindex").Exists) { client.CreateIndex("myindex", c => c .Mappings(m => m .Map<MyEntity>(mp => mp.AutoMap()) ) ); }
Шаг 5. Извлеките данные из MSSQL и сохраните их в Elasticsearch. Чтобы извлечь данные из MSSQL и сохранить их в Elasticsearch, нам нужно использовать Entity Framework Core для извлечения данных. и клиент Elasticsearch .NET для его хранения в Elasticsearch. Добавьте в контроллер следующий код, чтобы получить данные и сохранить их в Elasticsearch:
[HttpGet] public async Task<IActionResult> IndexData() { using (var db = new MyDbContext()) { var data = await db.MyEntities.ToListAsync(); var bulkAllObservable = client.BulkAll(data, b => b .Index("myindex") .BackOffRetries(2) .BackOffTime("30s") .RefreshOnCompleted() ); await bulkAllObservable.WaitAsync(TimeSpan.FromMinutes(15)); } return Ok(); }
Шаг 6. Поиск данных в Elasticsearch:
Для поиска данных в Elasticsearch мы можем использовать Elasticsearch .NET Client. Добавьте в контроллер следующий код для поиска данных в Elasticsearch:
[HttpGet("{search}")] public async Task<IActionResult> SearchData(string search) { var searchResponse = await client.SearchAsync<MyEntity>(s => s .Index("myindex") .Query(q => q .Match(m => m .Field(f => f.MyField) .Query(search) ) ) ); var results = searchResponse.Documents; return Ok(results); }
В этом коде мы используем метод SearchAsync для поиска данных в Elasticsearch. Мы передаем поисковый запрос в качестве параметра этому методу. Поисковый запрос используется для сопоставления с полем в индексе Elasticsearch. В этом примере мы ищем данные, соответствующие полю «MyField». Затем результаты поиска возвращаются в виде списка объектов «MyEntity».
Вывод. Elasticsearch — это мощный инструмент, который можно использовать для управления большими объемами данных. В этом руководстве мы увидели, как извлекать данные из MSSQL и сохранять их в Elasticsearch, а затем искать эти данные с помощью .NET 7 Web API и Entity Framework Core. С помощью Elasticsearch вы можете легко управлять, искать и анализировать большие объемы данных, что делает его незаменимым инструментом для любого современного приложения.