在.Net环境下使用elasticsearch实现大数据量的搜索

Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。

Elasticsearch使用标准的RESTful API和JSON。我们还用多种语言构建和维护客户机,如Java、Python、。NET、SQL和PHP。此外,我们的社区贡献了更多。它们易于使用,使用起来很自然,而且,就像Elasticsearch一样,不会限制您对它们的使用。

下面看下基于Net的使用

https://github.com/elastic/elasticsearch-net

选择 Elasticsearch.Net 作为客户端

连接

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));

创建

public class ElasticSearchClient{public ElasticLowLevelClient Client { get; }private readonly IConfiguration _configuration;public ElasticSearchClient(IConfiguration configuration){_configuration = configuration;Client = InitClient();}#region Methodspublic 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<bool> Delete(string index, string id){var response = await Client.DeleteAsync<StringResponse>(index, id);ResponseValidate(response);return response.Success;}#endregion#region privatesprivate 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}

使用

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294055.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙手机启动器apk下载,澪Pro启动器本体下载最新版

澪Pro启动器本体下载最新版专为我的世界的玩家们打造&#xff0c;可以在这里自由安装不同mod&#xff0c;也可以自定义编辑丰富的游戏内容&#xff0c;感受全新精彩的沙盒冒险玩法乐趣&#xff0c;更有丰富的资源和皮肤提供给玩家们&#xff0c;畅爽的玩法模式&#xff0c;沉浸…

当前联机日志损坏恢复

2019独角兽企业重金招聘Python工程师标准>>> 环境模拟 删除状态为active的联机日志&#xff0c;然后强行关闭数据库 处理过程 SQL> startup ORACLE instance started. Total System Global Area 167772160 bytes Fixed Size 1260720 bytes Variable Size 1426071…

Android之 如何解决ScrollView 和ListView滑动冲突的问题如何解决ScrollView can host only one direct child

android 采用ScrollView布局时出现异常:ScrollView can host only one direct child。 解决办法:主要是ScrollView内部只能有一个子元素,即不能并列两个子元素,所以需要把所有的子元素放到一个LinearLayout内部或 RelativeLayout等其他布局 如何解决ScrollView 和ListVi…

mysql 中执行的 sql 注意字段之间的反向引号和单引号

如下的数据表 create table test( id int(11) not null auto_increment primary key, user varchar(100) not null, flag char(2) not null default ok ); 当查询时应该写成 $sql "select user from test where flagok "; 字段是数据表的&#xff0c;用 &#xff08…

权威杂志评选出的十个最伟大的公式,爱因斯坦的质能方程竟然只能排第六!简直神仙打架....

全世界只有3.14 % 的人关注了爆炸吧知识难决高下各有千秋当数学家得出方程式和公式&#xff0c;如同看到雕像&#xff0c;美丽的风景&#xff0c;听到优美的曲调等等一样而得到充分的快乐。——柯普宁公式&#xff0c;是数学世界中一道美丽的风景&#xff0c;一个小小的等式&am…

在Idea中测试各JVM语言的交互性

为什么80%的码农都做不了架构师&#xff1f;>>> 背景&#xff1a; 假设出现这样的场景&#xff0c;一个Java项目中&#xff0c;需要用其他语言来编写相关模块&#xff0c;但需要能被Java调用 测试工具&#xff1a;Idea12 测试语言&#xff1a;Groovy、Scala、Ko…

android pcm调节音量,调整PCM语音数据的音量

通过编程实现调整PCM的音量&#xff0c;具体做法是乘上一个固定的数&#xff0c;但是要考虑数据的溢出问题&#xff0c;代码如下&#xff1a;//调节PCM数据音量//comment : 对PCM数据的音量进行放大//parameter :// pData PCM数据// nLen PCM数据的长度// nBitsPerSample 每个S…

.NET 大会今日开幕 |这些白嫖福利不看肠子都悔青

{ 12.18 线上开幕 文末有福利 }2021 .NET 开发者大会&#xff0c;今日开幕你是否已经满怀期待&#xff0c;同时又有很多疑问“ 会场在哪里&#xff1f;” "哪些大咖会参加&#xff1f;"“ 技术主题有哪些&#xff1f;” “ 什么时间有福利&#xff1f;”…时间不多了…

Android之如何解决ScrollView起始位置不是最顶部的解决办法

最近遇到了打开带有ScrollView的页面布局默认起始位置不是最顶部的情况&#xff0c;最后发现问题是因为ScrollView内部嵌套了listview&#xff0c;只需要设置listview获取焦点为false即可。 listview.setFocusable(false); 如果内部嵌套的是其它&#xff0c;也是同样的处理方…

asp.net web常用控件FileUpload(文件上传控件)

2019独角兽企业重金招聘Python工程师标准>>> FileUpload控件的主要中能&#xff1a;向指定目录上传文件&#xff0c;该控件包括一个文本框和一个浏览按钮。 常用的属性&#xff1a;FileBytes&#xff0c;FileContent、FileName、HasFile、PostedFile。 常用的方法&a…

SQL、LINQ、Lambda 三种用法

颜色注释&#xff1a; SQL LinqToSql Lambda QA1、 查询Student表中的所有记录的Sname、Ssex和Class列。select sname,ssex,class from studentLinq: from s in Students select new { s.SNAME, s.SSEX, s.CLASS }Lambda: Students.Select( s…

android 拍照换头像,Android调用相机拍照,裁剪及更换头像功能的实现

1&#xff0c;点击弹出popwindow&#xff0c;选择相机或者相册这个就不多说了&#xff0c;在OnclickListener里写弹出的窗口位置和样式。2&#xff0c;选择拍照功能&#xff0c;调用手机相机。//调用相机Intent intent new Intent("android.media.action.IMAGE_CAPTURE&q…

win7 绑定arp

首先&#xff0c;需要查看可用网卡的id&#xff0c;使用命令netsh i i show interface &#xff1b; 再绑定arp地址&#xff0c;netsh -c "i i" add neighbors idx IP地址 MAC地址 &#xff1b; 若要删除绑定&#xff0c;可以使用netsh -c "i i" delete…

设计模式:面向对象的设计原则下(ISP、DIP、KISS、YAGNI、DRY、LOD)

本文继续来介绍接口隔离原则&#xff08;ISP&#xff09;和依赖倒置原则&#xff08;DIP&#xff09;&#xff0c;这两个原则都和接口和继承有关。文章最后会简单介绍几个除了 SOLID 原则之外的原则。接口隔离原则&#xff08;ISP&#xff09;提起接口&#xff0c;开发人员的第…

Android之sqlite常见用法以及取最新多少条数据(包括删除和不删除之外的数据)

用sqlite的感受: sqlite和mysql很像,如果你对mysql有一定的经验,那么里面的sql写法也类似,比如常见的limit用法,mysql里面主要用limite分页,但是数据多了不建议,很影响效率。 sqlite常用用法函数总结如下: query: //need try catch and db.close();try{cursor…

ADB server didn't ACK

当我们通过eclipse开发Android应用时&#xff0c;会连接真机会使用模拟器进行仿真&#xff0c;有时候启动失败&#xff0c;会提示这样的错误。 工具/原料 Eclipse CMD命令窗口 方法/步骤 首先通过CMD启动adb服务。这个时候会提示启动失败。 服务启动失败的原因有很多&#xff0…

段落排版--行间距, 行高(line-height)

<!DOCTYPE HTML> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"> <title>行间距</title> <style type"text/css">p{line-height:2em;} /*段落行间距为2倍。*/ <…

解析邮件归档技术 保护企业邮件安全(三)

&#xff08;接中集&#xff09;  主持人&#xff1a;我明白你的意思&#xff0c;等于你只是把技术提供给他们&#xff0c;他们来卖和他们平台结合在一起的东西&#xff1f; 梁京伟&#xff1a;对&#xff0c;这种方式更多一些。所以这个是我们更倾向于开发我们技术&#xff0…