用 【NEST】 在C#中操作ElasticSearch
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用 【NEST】 在C#中操作ElasticSearch,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4848字,纯文字阅读大概需要7分钟。
内容图文
准备工作: VSCode开发环境,在终端控制台(Ctrl+~)输入命令 dotnet add package Nest 安装NEST包,安装好后打开项目的.csproj文件如下图。
一、索引数据:
1 using Nest; 2 using System; 3 4 namespace NetCoreFirst 5 { 6 public class ImportES 7 { 8 public static string ElasticsearchMethod() 9 { 10 // 1.通过es服务器 localhost:9200 来定义es client 11 var node = new Uri("http://localhost:9200"); 12var indexName = "esbot"; 13var settings = new ConnectionSettings(node).DefaultIndex(indexName); 14var elastic = new ElasticClient(settings); 1516//es服务器健康检查17var res = elastic.ClusterHealth(); 18 Console.WriteLine(res.Status); 1920//2.创建索引esbot21if (!elastic.IndexExists(indexName).Exists) 22 { 23var createIndexResponse = elastic.CreateIndex(indexName); 24var mappingBlogPost = elastic.Map<Resume>(s => s.AutoMap()); 25 } 2627//3.构造数据28string[] nameArray = {"Cody", "Blake", "Dennis", "Evan ", "Harris", "Jason ", "Lambert ", "Louis ", "Milton ", "Cody" }; 29string[] skillArray = {"c#", "c++", "java", "python", "php", "Linux", "ruby", "matlab", "perl", "powershell" }; 30long[] ageRange = { 24, 25, 26, 27, 28, 29, 30, 31, 32, 33 }; 31for(int i=0; i< 10;i++) 32 { 33var resume = new Resume 34 { 35 Id= Guid.NewGuid(), 36 Name=nameArray[i], 37 Age=ageRange[i], 38 Skills="My skill is Azure and " + skillArray[i] 39 }; 40//4.导入数据到索引41 IIndexResponse bulkIndexResponse = elastic.Index(resume, p => p.Type(typeof(Resume)).Id(i).Refresh(null)); 42 } 4344//5. 简单搜索45var searchResult = elastic.Search<Resume>(sr => sr.Query(q => q.MatchAll())); 46// System.Console.WriteLine(searchResult.Hits.Count); 47// System.Console.ReadLine();48var resumesCount = searchResult.Hits.Count.ToString(); 49return resumesCount; 50 } 51 } 52 }
Resume类的定义:
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
1 using Nest; 2 using System; 3 4 namespace NetCoreFirst 5 { 6 [ElasticsearchType(Name="candidate", IdProperty="Id")] 7publicclass Resume 8 { 9 [Text(Name="id", Index=false)] 10public Guid? Id { get; set; } 1112 [Text(Name="name", Index=true)] 13publicstring Name { get; set; } 1415 [Text(Name="age", Index=false)] 16publiclong Age { get; set; } 1718 [Text(Name="skills", Index=true)] 19publicstring Skills { get; set; } 20 } 21 }
二、搜索数据
1 using Nest; 2 using System; 3 4 namespace NetCoreFirst 5 { 6 public class SearchES 7 { 8 public static string indexName="bank"; 9publicstatic Uri node = new Uri("http://localhost:9200"); 10publicstatic ConnectionSettings settings = new ConnectionSettings(node).DefaultIndex(indexName); 11publicstatic ElasticClient elastic = new ElasticClient(settings); 1213publicstatic ISearchResponse<Bank> SearchNumber() 14 { 15string dictionaryKey = "balance"; 16var dictionary = Extension.BankDictionary(); 17var rangeField = dictionary[dictionaryKey]; 18var gt = 40000; 19var lt = 40100; 20var searchResponse = elastic.Search<Bank>(es => es.Query(q => 21 q.Range(r => r.Name("").Field(rangeField).GreaterThan(gt).LessThan(lt).Boost(2.0)))); 22return searchResponse; 23 } 2425publicstatic ISearchResponse<Bank> SearchString() 26 { 27string queryStr = ""; 28var searchResponse = elastic.Search<Bank>(es => es.Query(q => 29 q.QueryString(qs => qs.Query(queryStr)))); 30return searchResponse; 31 } 3233publicstatic ISearchResponse<Bank> SearchField() 34 { 35string queryStr = "35"; 36string dictionaryKey = "age"; 37var dictionary = Extension.BankDictionary(); 38var rangeField = dictionary[dictionaryKey]; 39var searchResponse = elastic.Search<Bank>(es => es.Query(q => 40 q.Match(m => m.Field(rangeField).Query(queryStr)))); 41return searchResponse; 42 } 43 } 44 }
![技术分享图片](/img/jia.gif)
![技术分享图片](/img/jian.gif)
1 public class Extension 2 { 3 public static Dictionary<string, Expression<Func<Resume,object>>> ResumeDictionary() 4 { 5returnnew Dictionary<string, Expression<Func<Resume, object>>> 6 { 7 {"age", p=>p.Age}, 8 {"name", p=>p.Name} 9 }; 10 } 1112publicstatic Dictionary<string, Expression<Func<Bank, object>>> BankDictionary() 13 { 14returnnew Dictionary<string, Expression<Func<Bank, object>>> 15 { 16 {"account_number", p => p.account_number}, 17 {"age", p => p.age}, 18 {"balance", p => p.balance} 19 }; 20 } 21 } 2223 [ElasticsearchType(Name="account", IdProperty="Id")] 24publicclass Bank 25 { 26publiclong account_number {get;set;} 27publicstring address { get; set; } 28publiclong age { get; set; } 29publiclong balance { get; set; } 30publicstring city { get; set; } 31publicstring email { get; set; } 32publicstring employer { get; set; } 33publicstring firstname { get; set; } 34publicstring gender { get; set; } 35publicstring lastname { get; set; } 36publicstring state { get; set; } 37 }
*****************************
*** Keep learning and growing. ***
*****************************
原文:https://www.cnblogs.com/gangle/p/9337472.html
内容总结
以上是互联网集市为您收集整理的用 【NEST】 在C#中操作ElasticSearch全部内容,希望文章能够帮你解决用 【NEST】 在C#中操作ElasticSearch所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。