准备工作: 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 }

Extension类和Bank类的定义

 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相关推荐

  1. 万字长文:详解 Spring Boot 中操作 ElasticSearch

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 超级小豆丁 来源 | http://www.m ...

  2. elasticsearch 客户端工具_万字长文:详解 Spring Boot 中操作 ElasticSearch

    点击上方"小强的进阶之路",选择"星标"公众号 优质文章,及时送达 预计阅读时间: 15分钟 一.ElasticSearch 简介 1.简介 ElasticSe ...

  3. python elasticsearch模块_Python 操作 ElasticSearch

    Python操作ElasticSearch Python批量向ElasticSearch插入数据 Python 2的多进程不能序列化类方法, 所以改为函数的形式. 直接上代码: #!/usr/bin/ ...

  4. .Net Core中使用NEST简单操作Elasticsearch

    C#中访问Elasticsearch主要通过两个包NEST和Elasticsearch.Net,NEST用高级语法糖封装了Elasticsearch.Net可以通过类Linq的方式进行操作,而Elas ...

  5. ELasticSearch安装使用过程中遇到的坑的解决方案,以及使用Kibana操作ELasticSearch

    一.安装elasticsearch和kibana 安装elasticsearch和kibana,我现在使用的是windows版本的,安装其实也不难,具体的安装教程可以参照这两篇博客,写的安装步骤也很详 ...

  6. 【ES】CURL在windows中对ElasticSearch的一些简单的操作

    上一节说了CURL在windows中的安装方式,现在就简单的记录下CURL在windows中对ElasticSearch的一些简单的操作 直接上操作命令 首先我们打开cmd命令行 输入curl -he ...

  7. SpringBoot 操作elasticsearch

    SpringBoot 操作elasticsearch 版本环境 jdk1.8 elasticsearch 7.6.1 maven <dependency><groupId>or ...

  8. SpringBoot 操作 ElasticSearch 详解(万字长文)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:超级小豆丁 http://www.mydlq.club/ar ...

  9. java操作elasticsearch实现query String

    1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...

最新文章

  1. C语言 fread()与fwrite()函数说明与示例
  2. C++中无符号数与有符号数的转换
  3. [poj3041]Asteroids(二分图的最小顶点覆盖)
  4. 数据集与JSON对象互相转换
  5. hdu5253最小生成树
  6. DL之SPP-Net:SPP-Net算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  7. 掌握XML系列(四)---创建格式良好的XML文档
  8. Java IO流 、 Properties 、 枚举
  9. java二重循环计数_java的二重循环代码样例
  10. SAP License:SAP职场处好人际关系的六大秘籍
  11. 20172327 2017-2018-2 《程序设计与数据结构》第九周学习总结
  12. SQL Server 填充因子
  13. DSP实验报告—实验 4  编写一个汇编和 C 混合的 DSP 程序
  14. 服装计算机辅助设计(CAD)技能证书
  15. 利用Visio DIY自己的示意图
  16. 前端项目搭建基本流程
  17. pytroch、tensorflow对比学习—功能组件(数据管道、回调函数、特征列处理)
  18. 怎么修改docker镜像的名字_docker镜像如何重命名
  19. 无刷马达绕线机相对于人工的优势
  20. H5页面调用微信支付

热门文章

  1. IIS日志-网站运维的好帮手
  2. genneratorConfig的记录 2021-04-18
  3. java 数组map_Java之数组array和集合list、set、map
  4. python numpy数组画图_python – Numpy和Pyplot的条件绘图
  5. 集合的get方法中参数从多少开始_源码分析CopyOnWriteArrayList 中的隐藏知识,你Get了吗?...
  6. 北京小学 计算机派位,北京小升初电脑派位原理详解!和对口直升入学有什么区别?...
  7. 怎样获取不同域名的ifram的html,AJAX | iframe跨域的实现方法
  8. android 仿ios三级联动,仿iOS的PickerView控件,有时间选择和选项选择并支持一二三级联动效果...
  9. java 本地内存_哪个更快:Java堆还是本地内存
  10. word是不是计算机硬件,word及excel模拟试题1_计算机硬件及应用_IT/计算机_资料