Elasticsearch 入门(三)使用Elasticsearch.Net & NEST作为elasticsearch客户端

GitHub仓库

var node = new Uri("http://myserver:9200");var config = new ConnectionConfiguration(node);var client = new ElasticLowLevelClient(config);
var myJson = @"{ ""hello"" : ""world"" }";client.Index<StringResponse>("myindex", "1", myJson);var myJson = new { hello = "world" };client.Index<BytesResponse>("myindex", "1", PostData.Serializable(myJson));

Elasticsearch.Net 封装

  • 新建 ElasticSearchClient

public class ElasticSearchClient    {        public ElasticLowLevelClient Client { get; }        private readonly IConfiguration _configuration;        public ElasticSearchClient(IConfiguration configuration)        {            _configuration = configuration;            Client = InitClient();        }        #region Methods        public async Task<string> Index(string index, string id, PostData body)        {            var response = await Client.IndexAsync<StringResponse>(index, id, body);            ResponseValidate(response);            return response.Body;        }        public async Task<List<string>> SearchWithHighLight(string index, string query)        {            var response = await Client.SearchAsync<StringResponse>(                index,                PostData.Serializable(new                {                    from = 0,                    size = 100,                    query = new                    {                        match = new                        {                            content = query                        }                    },                    highlight = new                    {                        pre_tags = new[] { "<tag1>", "<tag2>" },                        post_tags = new[] { "/<tag1>", "/<tag2>" },                        fields = new                        {                            content = new { }                        }                    }                }));            ResponseValidate(response);            var responseJson = (JObject)JsonConvert.DeserializeObject(response.Body);            var hits = responseJson["hits"]["hits"] as JArray;            var result = new List<string>();            foreach (var hit in hits)            {                var id = hit["_id"].ToObject<string>();                result.Add(id);            }            return result;        }        public async Task Delete(string index, string id)        {            var response = await Client.DeleteAsync<StringResponse>(index, id);            ResponseValidate(response);        }        #endregion        #region privates        private ElasticLowLevelClient InitClient()        {            var node = new Uri(_configuration.GetConnectionString("ElasticSearch"));            var settings = new ConnectionConfiguration(node);            var client = new ElasticLowLevelClient(settings);            return client;        }        private void ResponseValidate(StringResponse response)        {            if (response.Success == false)            {                throw new ResultException(response.Body);            }        }        #endregion    }
  • 依赖注入 Startup.csservices.AddScoped<ElasticSearchClient>();

  • 使用

private readonly ElasticSearchClient _elasticSearchClient;await _elasticSearchClient.Index(Article.EsIndex, article.ArticleUID,PostData.Serializable(article));
(0)

相关推荐

  • HttpClient来自官方的JSON扩展方法

    System.Net.Http.Json Json的序列化和反序列化是我们日常常见的操作,通过System.Net.Http.Json我们可以用少量的代码实现上述操作.正如在github设计文档中所描 ...

  • 带给你一篇Elasticsearch入门文章

    引言 Elasticsearch(以下简称ES)是我想写想了很久的一个系列,因为他是我在老东家离职前刚接触的最后一个新技术,当时就是对某子业务的商品搜索做改造,从MySQL迁移商品数据到ES中. 我先 ...

  • 法律检索入门三步法 | iCourt

    作者:王平 微信:seanzwdx1021 单位:元创智成律师团队 编者按 大数据时代,法律检索已经成为律师日常工作中必不可少的部分.但如何才能将法律术语变成计算机语言?如何才能准确.快速.全面地检索 ...

  • 由散入整,化僵为柔,因柔而韧:入门三步曲

    初学最主要的是三个劲:整劲,柔劲与韧劲.由散入整,化僵为柔,因柔而韧,构成入门三步曲. 整劲.柔劲.韧劲 初学者看高手打太极拳非常羡慕,对照自己的视频,总觉得差那么一股劲,可是自己又说不出来,于是觉得 ...

  • 书单 | 哲学入门三书,让小白也能摸到哲学之门

    这是 书邦人 的第 102 篇原创文章 前天有一位读者在微信上问我,能否推荐一两本哲学入门书给她,最好有例子有故事,读起来不枯燥的.我当时跟她说先读第十版的<大问题>,过两天再找两本书给她 ...

  • 太极拳入门三步曲:由散入整,化僵为柔,因柔而韧

    初学最主要的是三个劲:整劲,柔劲与韧劲.由散入整,化僵为柔,因柔而韧,构成入门三步曲. 整劲 柔劲 韧劲 初学者看高手打太极拳非常羡慕,对照自己的视频,总觉得差那么一股劲,可是自己又说不出来,于是觉得 ...

  • 缠论入门三招之一(K线重叠)

    缠论入门三招之一(K线重叠)

  • wordpress 建站教程新手入门三基本设置

    营销值得学上篇内容wordpress 建站教程新手入门三基本设置,这篇将介绍WordPress 后台基本设置. 视频教程: 图文教程: 一 .设置管理 设置管理员信息(或其他用户信息) 登录 自己网站 ...

  • 一年级新生写字入门三策略

    万事开头难.新一年级的语文老师,面对刚从幼儿园升级上来的小朋友,做什么都难,教什么都得一对一手把手.尤其是写字教学,想让那些未脱稚气,刚学习握笔的小孩子,写出一个像样的笔画,实在勉为其难.这让多少一年 ...

  • CarSim仿真快速入门(三)

    CarSim仿真快速入门(三)