用 【NEST】 在C#中操作ElasticSearch
准备工作: 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"); 12 var indexName = "esbot"; 13 var settings = new ConnectionSettings(node).DefaultIndex(indexName); 14 var elastic = new ElasticClient(settings); 15 16 //es服务器健康检查 17 var res = elastic.ClusterHealth(); 18 Console.WriteLine(res.Status); 19 20 //2.创建索引esbot 21 if (!elastic.IndexExists(indexName).Exists) 22 { 23 var createIndexResponse = elastic.CreateIndex(indexName); 24 var mappingBlogPost = elastic.Map<Resume>(s => s.AutoMap()); 25 } 26 27 //3.构造数据 28 string[] nameArray = {"Cody", "Blake", "Dennis", "Evan ", "Harris", "Jason ", "Lambert ", "Louis ", "Milton ", "Cody" }; 29 string[] skillArray = {"c#", "c++", "java", "python", "php", "Linux", "ruby", "matlab", "perl", "powershell" }; 30 long[] ageRange = { 24, 25, 26, 27, 28, 29, 30, 31, 32, 33 }; 31 for(int i=0; i< 10;i++) 32 { 33 var 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 } 43 44 //5. 简单搜索 45 var searchResult = elastic.Search<Resume>(sr => sr.Query(q => q.MatchAll())); 46 // System.Console.WriteLine(searchResult.Hits.Count); 47 // System.Console.ReadLine(); 48 var resumesCount = searchResult.Hits.Count.ToString(); 49 return resumesCount; 50 } 51 } 52 }
Resume类的定义:
1 using Nest; 2 using System; 3 4 namespace NetCoreFirst 5 { 6 [ElasticsearchType(Name="candidate", IdProperty="Id")] 7 public class Resume 8 { 9 [Text(Name="id", Index=false)] 10 public Guid? Id { get; set; } 11 12 [Text(Name="name", Index=true)] 13 public string Name { get; set; } 14 15 [Text(Name="age", Index=false)] 16 public long Age { get; set; } 17 18 [Text(Name="skills", Index=true)] 19 public string Skills { get; set; } 20 } 21 }
View Code
二、搜索数据
1 using Nest; 2 using System; 3 4 namespace NetCoreFirst 5 { 6 public class SearchES 7 { 8 public static string indexName="bank"; 9 public static Uri node = new Uri("http://localhost:9200"); 10 public static ConnectionSettings settings = new ConnectionSettings(node).DefaultIndex(indexName); 11 public static ElasticClient elastic = new ElasticClient(settings); 12 13 public static ISearchResponse<Bank> SearchNumber() 14 { 15 string dictionaryKey = "balance"; 16 var dictionary = Extension.BankDictionary(); 17 var rangeField = dictionary[dictionaryKey]; 18 var gt = 40000; 19 var lt = 40100; 20 var searchResponse = elastic.Search<Bank>(es => es.Query(q => 21 q.Range(r => r.Name("").Field(rangeField).GreaterThan(gt).LessThan(lt).Boost(2.0)))); 22 return searchResponse; 23 } 24 25 public static ISearchResponse<Bank> SearchString() 26 { 27 string queryStr = ""; 28 var searchResponse = elastic.Search<Bank>(es => es.Query(q => 29 q.QueryString(qs => qs.Query(queryStr)))); 30 return searchResponse; 31 } 32 33 public static ISearchResponse<Bank> SearchField() 34 { 35 string queryStr = "35"; 36 string dictionaryKey = "age"; 37 var dictionary = Extension.BankDictionary(); 38 var rangeField = dictionary[dictionaryKey]; 39 var searchResponse = elastic.Search<Bank>(es => es.Query(q => 40 q.Match(m => m.Field(rangeField).Query(queryStr)))); 41 return searchResponse; 42 } 43 } 44 }
1 public class Extension 2 { 3 public static Dictionary<string, Expression<Func<Resume,object>>> ResumeDictionary() 4 { 5 return new Dictionary<string, Expression<Func<Resume, object>>> 6 { 7 {"age", p=>p.Age}, 8 {"name", p=>p.Name} 9 }; 10 } 11 12 public static Dictionary<string, Expression<Func<Bank, object>>> BankDictionary() 13 { 14 return new 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 } 22 23 [ElasticsearchType(Name="account", IdProperty="Id")] 24 public class Bank 25 { 26 public long account_number {get;set;} 27 public string address { get; set; } 28 public long age { get; set; } 29 public long balance { get; set; } 30 public string city { get; set; } 31 public string email { get; set; } 32 public string employer { get; set; } 33 public string firstname { get; set; } 34 public string gender { get; set; } 35 public string lastname { get; set; } 36 public string state { get; set; } 37 }
View Code
*****************************
*** Keep learning and growing. ***
*****************************
转载于:https://www.cnblogs.com/gangle/p/9337472.html
用 【NEST】 在C#中操作ElasticSearch相关推荐
- 万字长文:详解 Spring Boot 中操作 ElasticSearch
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 超级小豆丁 来源 | http://www.m ...
- elasticsearch 客户端工具_万字长文:详解 Spring Boot 中操作 ElasticSearch
点击上方"小强的进阶之路",选择"星标"公众号 优质文章,及时送达 预计阅读时间: 15分钟 一.ElasticSearch 简介 1.简介 ElasticSe ...
- python elasticsearch模块_Python 操作 ElasticSearch
Python操作ElasticSearch Python批量向ElasticSearch插入数据 Python 2的多进程不能序列化类方法, 所以改为函数的形式. 直接上代码: #!/usr/bin/ ...
- .Net Core中使用NEST简单操作Elasticsearch
C#中访问Elasticsearch主要通过两个包NEST和Elasticsearch.Net,NEST用高级语法糖封装了Elasticsearch.Net可以通过类Linq的方式进行操作,而Elas ...
- ELasticSearch安装使用过程中遇到的坑的解决方案,以及使用Kibana操作ELasticSearch
一.安装elasticsearch和kibana 安装elasticsearch和kibana,我现在使用的是windows版本的,安装其实也不难,具体的安装教程可以参照这两篇博客,写的安装步骤也很详 ...
- 【ES】CURL在windows中对ElasticSearch的一些简单的操作
上一节说了CURL在windows中的安装方式,现在就简单的记录下CURL在windows中对ElasticSearch的一些简单的操作 直接上操作命令 首先我们打开cmd命令行 输入curl -he ...
- SpringBoot 操作elasticsearch
SpringBoot 操作elasticsearch 版本环境 jdk1.8 elasticsearch 7.6.1 maven <dependency><groupId>or ...
- SpringBoot 操作 ElasticSearch 详解(万字长文)
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:超级小豆丁 http://www.mydlq.club/ar ...
- java操作elasticsearch实现query String
1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...
最新文章
- C语言 fread()与fwrite()函数说明与示例
- C++中无符号数与有符号数的转换
- [poj3041]Asteroids(二分图的最小顶点覆盖)
- 数据集与JSON对象互相转换
- hdu5253最小生成树
- DL之SPP-Net:SPP-Net算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- 掌握XML系列(四)---创建格式良好的XML文档
- Java IO流 、 Properties 、 枚举
- java二重循环计数_java的二重循环代码样例
- SAP License:SAP职场处好人际关系的六大秘籍
- 20172327 2017-2018-2 《程序设计与数据结构》第九周学习总结
- SQL Server 填充因子
- DSP实验报告—实验 4 编写一个汇编和 C 混合的 DSP 程序
- 服装计算机辅助设计(CAD)技能证书
- 利用Visio DIY自己的示意图
- 前端项目搭建基本流程
- pytroch、tensorflow对比学习—功能组件(数据管道、回调函数、特征列处理)
- 怎么修改docker镜像的名字_docker镜像如何重命名
- 无刷马达绕线机相对于人工的优势
- H5页面调用微信支付
热门文章
- IIS日志-网站运维的好帮手
- genneratorConfig的记录 2021-04-18
- java 数组map_Java之数组array和集合list、set、map
- python numpy数组画图_python – Numpy和Pyplot的条件绘图
- 集合的get方法中参数从多少开始_源码分析CopyOnWriteArrayList 中的隐藏知识,你Get了吗?...
- 北京小学 计算机派位,北京小升初电脑派位原理详解!和对口直升入学有什么区别?...
- 怎样获取不同域名的ifram的html,AJAX | iframe跨域的实现方法
- android 仿ios三级联动,仿iOS的PickerView控件,有时间选择和选项选择并支持一二三级联动效果...
- java 本地内存_哪个更快:Java堆还是本地内存
- word是不是计算机硬件,word及excel模拟试题1_计算机硬件及应用_IT/计算机_资料