一、客户端封装
using Elasticsearch.Net; using Nest; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace esdemo { public class ElasticsearchUtils { private static ElasticsearchUtils _elasticsearchUtils; /// <summary> /// Linq查询的官方Client /// </summary> private static IElasticClient _elasticLinqClient { get; set; } /// <summary> /// Js查询的官方Client /// </summary> private static IElasticLowLevelClient _elasticJsonClient { get; set; } private ElasticsearchUtils() { } private static readonly object eslock = new object(); public static ElasticsearchUtils GetInstance() { if (_elasticsearchUtils == null) { lock (eslock) { if (_elasticsearchUtils == null) { var urls = "http://192.168.0.150:9200"; var username = "elastic"; var passowrd = "123456"; var uris = urls.Split(",").ToList().ConvertAll(x => new Uri(x));//配置节点地址,以,分开 var connectionPool = new StaticConnectionPool(uris);//配置请求池 var settings = new ConnectionSettings(connectionPool) .BasicAuthentication(username, passowrd) .RequestTimeout(TimeSpan.FromSeconds(30));//请求配置参数 _elasticLinqClient = new ElasticClient(settings); _elasticJsonClient = new ElasticLowLevelClient(settings); _elasticsearchUtils = new ElasticsearchUtils(); } } } return _elasticsearchUtils; } public IElasticClient LinqClient() { return _elasticLinqClient; } public IElasticLowLevelClient JsonClient() { return _elasticJsonClient; } } }
二、CURD
DataService dataService = new DataService(); for (int i = 0; i < 10000; i++) { var logs = dataService.GetSource(i * 10, 10); var logsv2 = new List<request_audit_logs_v2>(); foreach (var item in logs) { //var aa = JsonConvert.DeserializeObject<dynamic>(item.request_content); //var aaa = aa.parm.Token; request_audit_logs_v2 log = new request_audit_logs_v2(); log.api = log.api; log.key = item.key; log.post_type = item.post_type; log.url = item.url; log.request_content = item.request_content; log.hander = item.hander; log.status = item.status; log.response_content = item.response_content; log.request_time = item.request_time.ToString("yyyy-MM-dd HH:mm:ss"); log.response_time = item.response_time.ToString("yyyy-MM-dd HH:mm:ss"); log.exception = item.exception; log.run_time = item.run_time; log.thread_num = item.thread_num; log.create_time = item.create_time.ToString("yyyy-MM-dd HH:mm:ss"); log.modify_time =item.modify_time.ToString("yyyy-MM-dd HH:mm:ss"); log.user_name = item.user_name; logsv2.Add(log); //var atters1 = ElasticsearchUtils.GetInstance().LinqClient().Bulk(p => p.Create<object>(c => c.Index("request_audit_logs").Document(log))); } var bulkAllObserver = new BulkAllObserver(); var aa= ElasticsearchUtils.GetInstance().LinqClient().BulkAll(logsv2, f => f.Index("request_audit_logs")); aa.Subscribe(bulkAllObserver); } Console.WriteLine("完成"); Console.ReadKey();
原文:https://www.cnblogs.com/zd1994/p/13490271.html