.net core操作ES进行读写数据操作

 

Package包项目下,新增NEST包。注意,包版本需要和使用的ES的版本保持一致,可以避免因为不兼容所导致的一些问题。例如我本机使用的ES版本是7.13版本,所以我安装的NEST包也是7.13版本:

 十三、.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法

 

Common文件夹下,新建类库项目 Wsk.Core.ElasticSearch,并新建类ElasticSearchConnection,用于提供一些操作方法。以及新建一个对应的接口IElasticSearchConnection。然后引用包项目,以及AppHelper项目备用:

 十三、.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法

 

Entity项目下,新建一个ES配置实体类,叫ElasticConnectionInfo,以及在appsettings配置文件下,新增一组ES的连接配置信息,包括索引和url地址:

 十三、.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法

 十三、.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法

代码:

public class ElasticConnectionInfo
    {
        public string Url { get; set; }
        public string Index { get; set; }
    }
 "ES": [
    {
      "Index": "wesky",
      "Url": "http://localhost:9200"
    }
  ]

 

 

然后,在ElasticSearchConnection类下面,添加一些构造依赖注入,以及添加一个连接方法ESConnection

 十三、.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法

 

接着新建一个实体类 ElasticTestDataInfo,用于做一个模拟数据测试:

 十三、.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法

 代码:

public class ElasticTestDataInfo
    {
        
        public int Code { get; set; }
        public string Function { get; set; }
        public string Message { get; set; }

    }

 

现在,在启动项目下面,新建文件夹WskHostedService,用于存放启动项有关内容。以及新建一个类,叫InitialService,并且继承自 IHostedService, IDisposable

十三、.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法 

 

该方法是用于项目启动时候执行的,我们把连接ES的部分,写到这里面来。似乎接口用不到,把ElasticSearchConnection继承的IElasticSearchConnection屏蔽掉,然后把ESConnection方法设置为静态的,然后在上面创建的类中的StartAsync下面,进行ES的初始化连接:

 十三、.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法

 

然后在WskService类里面,通过使用AddHostedService添加对该初始化服务的注册:

 十三、.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法

 

现在配置完毕,在控制器里面,分别添加单个写入和批量写入的api,大概内容如下:

 十三、.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法

 

我配置文件里面的索引是wesky,为了确保实验效果,我先使用kibana的页面进行查询是否wesky索引是否有内容:

 十三、.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法

 

没有wesky索引,可以开始启动程序(备注:正常使用期间不需要删除索引,会导致写入的数据丢失,我此处只是为了方便效果验证使用)

先启动程序,为了查看连接是否成功,我把连接成功信息打印出来:

 十三、.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法

 

至此,连接ES部分的类代码如下:

   public class ElasticSearchConnection
    {
        public static ElasticClient _esClient;

        //private readonly ILogger<ElasticSearchConnection> _logger;
        //public ElasticSearchConnection(ILogger<ElasticSearchConnection> logger)
        //{
        //    _logger = logger;
        //}

        public static void ESConnection()
        {
            List<ElasticConnectionInfo> configInfo = AppHelper.ReadAppSettings<ElasticConnectionInfo>(new string[] { "ES" });
            if (configInfo.Any())
            {
                var settings = new ConnectionSettings(new Uri(configInfo.FirstOrDefault().Url))
                    .DefaultIndex(configInfo.FirstOrDefault().Index);
                _esClient = new ElasticClient(settings);
                Console.WriteLine("ES已连接");
            }
            else
            {
                Console.WriteLine("ES连接未配置\n");
            }

        }

    }
View Code

相关文章:

  • 2022-12-23
  • 2023-02-17
  • 2022-12-23
  • 2022-12-23
  • 2021-04-02
  • 2022-12-23
  • 2020-05-15
猜你喜欢
  • 2021-06-05
  • 2021-06-05
  • 2021-06-08
  • 2021-06-30
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案