1. 项目中引用 Elasticsearch.NET  

      Elasticsearch 其他版本可在: http://www.nuget.org/  找到对应的项目以源码 !

本文以 2.4.1版本为例

首先我们打开项目,点击-工具--》NuGet 包管理器--》程序包管理器控制台

在控制台输入安装命令:   Install-Package NEST -Version 2.4.1      (然后回车确认安装)

如图: 

 安装成功:


2.  项目中CRUD案例

首先根据数据对象 创建Model 类。

并且在字段属性上面加上 :  [JsonProperty("字段名")]

  1. <span style="font-size:10px;">using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Runtime.Serialization;
  6. using System.Web;
  7. namespace WebApplication1.Models
  8. {
  9. // [DataContract]
  10. public class Orders
  11. {
  12. //  [DataMember]
  13. [JsonProperty("OrderID")]  //Newtonsoft.Json  命名空间
  14. public string OrderID { get; set; }
  15. [JsonProperty("IsPackageOrder")]
  16. public int IsPackageOrder { get; set; }
  17. [JsonProperty("PackageOrderID")]
  18. public string PackageOrderID { get; set; }
  19. [JsonProperty("CRSResvID")]
  20. public string CRSResvID { get; set; }
  21. [JsonProperty("GuaranteeModeCode")]
  22. public string GuaranteeModeCode { get; set; }
  23. [JsonProperty("HotelID")]
  24. public string HotelID { get; set; }
  25. [JsonProperty("GuestSrcCode")]
  26. public string GuestSrcCode { get; set; }
  27. [JsonProperty("HotelDiscountCode")]
  28. public string HotelDiscountCode { get; set; }
  29. [JsonProperty("MemberCardTypeCode")]
  30. public string MemberCardTypeCode { get; set; }
  31. [JsonProperty("ResvRouteCode")]
  32. public string ResvRouteCode { get; set; }
  33. [JsonProperty("GuestID")]
  34. public string GuestID { get; set; }
  35. [JsonProperty("AgreementID")]
  36. public string AgreementID { get; set; }
  37. [JsonProperty("MemberCardNo")]
  38. public string MemberCardNo { get; set; }
  39. [JsonProperty("TeamID")]
  40. public string TeamID { get; set; }
  41. [JsonProperty("Amount")]
  42. public string Amount { get; set; }
  43. [JsonProperty("ContactName")]
  44. public string ContactName { get; set; }
  45. [JsonProperty("ContactMobile")]
  46. public string ContactMobile { get; set; }
  47. [JsonProperty("ContactPhone")]
  48. public string ContactPhone { get; set; }
  49. [JsonProperty("ContactFax")]
  50. public string ContactFax { get; set; }
  51. [JsonProperty("ContactEmail")]
  52. public string ContactEmail { get; set; }
  53. [JsonProperty("Remark1")]
  54. public string Remark1 { get; set; }
  55. [JsonProperty("Remark2")]
  56. public string Remark2 { get; set; }
  57. [JsonProperty("ResvTime")]
  58. public string ResvTime { get; set; }
  59. [JsonProperty("ResvCityCode")]
  60. public string ResvCityCode { get; set; }
  61. [JsonProperty("IsPrePaid")]
  62. public int IsPrePaid { get; set; }
  63. [JsonProperty("OrderStatusCode")]
  64. public string OrderStatusCode { get; set; }
  65. [JsonProperty("CancelReasonCode")]
  66. public string CancelReasonCode { get; set; }
  67. [JsonProperty("ConfirmTypeCode")]
  68. public string ConfirmTypeCode { get; set; }
  69. [JsonProperty("InputStartTime")]
  70. public string InputStartTime { get; set; }
  71. [JsonProperty("InputSpanMS")]
  72. public int InputSpanMS { get; set; }
  73. [JsonProperty("InputWorkNo")]
  74. public string InputWorkNo { get; set; }
  75. [JsonProperty("CreatedOn")]
  76. public string CreatedOn { get; set; }
  77. [JsonProperty("ModifiedBy")]
  78. public string ModifiedBy { get; set; }
  79. [JsonProperty("ModifiedOn")]
  80. public string ModifiedOn { get; set; }
  81. [JsonProperty("TimeStamp")]
  82. public string TimeStamp { get; set; }
  83. [JsonProperty("CRSOldResvRouteCode")]
  84. public string CRSOldResvRouteCode { get; set; }
  85. [JsonProperty("ActualDiscount")]
  86. public float ActualDiscount { get; set; }
  87. [JsonProperty("AgentName")]
  88. public string AgentName { get; set; }
  89. [JsonProperty("DiscountTypeTag")]
  90. public int DiscountTypeTag { get; set; }
  91. [JsonProperty("FixedPrice")]
  92. public string FixedPrice { get; set; }
  93. [JsonProperty("AgentCode")]
  94. public string AgentCode { get; set; }
  95. [JsonProperty("IsApartment")]
  96. public int IsApartment { get; set; }
  97. [JsonProperty("TeamProtocalID")]
  98. public string TeamProtocalID { get; set; }
  99. [JsonProperty("InvoiceTitle")]
  100. public string InvoiceTitle { get; set; }
  101. [JsonProperty("PointIncrementalTimes")]
  102. public string PointIncrementalTimes { get; set; }
  103. [JsonProperty("ResvType")]
  104. public string ResvType { get; set; }
  105. }
  106. }</span>
  1. /// <summary>
  2. /// 创建客户端实例
  3. /// </summary>
  4. /// <returns></returns>
  5. private static ElasticClient GetSearchClient()
  6. {
  7. //服务器IP地址: 端口号 。(Elasticsearch默认端口:9200)
  8. var node = new Uri("http://192.168.210.31:9200");
  9. var settings = new ConnectionSettings(node);
  10. var client = new ElasticClient(settings);
  11. //验证索引是否存在
  12. if (!client.IndexExists("order").Exists)
  13. {
  14. client.CreateIndex("order");    //索引
  15. }
  16. //返回Elasticsearch 操作实例
  17. return client;
  18. }

2.1  新增  

     

  1. <span style="font-size:10px;">           //操作ElasticSearch实例
  2. ElasticClient client = GetSearchClient();
  3. //新增对象实例化
  4. Orders orderModel = new Orders();
  5. //赋值
  6. orderModel.OrderID = "79190545";
  7. orderModel.ContactName = "IT交流互助 QQ群: 79190545";
  8. //初始化插入对象
  9. IIndexRequest<Orders> o = new IndexRequest<Orders>(
  10. "order",              //_index  :索引
  11. "orderhis",           //_type   :类型
  12. orderModel.OrderID   //_id     :标示ID
  13. )
  14. {
  15. Document = orderModel,  //新增数据对象
  16. };
  17. //调用新增
  18. IIndexResponse inxResponse = client.Index(o);
  19. if (inxResponse.IsValid)
  20. {
  21. //操作成功
  22. }
  23. else
  24. {
  25. //操作失败
  26. }</span>

2.2  查询

  1. <span style="font-size:32px;font-weight: bold;">     </span><span style="font-size:10px;">string key = "IT交流互助 群: 79190545";  // 需要查询的内容
  2. int ix = 1; //当前页数
  3. //实例化 ElasticSearch 操作对象
  4. ElasticClient client = GetSearchClient();
  5. //执行查询
  6. var response = client.Search<Orders>(s => s
  7. .From((ix - 1) * 5)    //起始页
  8. .Size(5)               //每页条数
  9. .Query(q =>            //查询筛选条件
  10. //这样就查询不出来
  11. //    q.Wildcard(t => t.ContactName, string.Format("*{0}*", key.ToLower()))  ||
  12. //精确查找
  13. // q.Term(t => t.OrderID, key.ToLower())
  14. //|| q.Term(t => t.ContactMobile, key.ToLower())
  15. //|| q.Term(t => t.ContactPhone, key.ToLower())
  16. //模糊检索
  17. q.Wildcard(t => t.OrderID, string.Format("*{0}*", key.ToLower()))
  18. || q.Wildcard(t => t.ContactMobile, string.Format("*{0}*", key.ToLower()))
  19. || q.Wildcard(t => t.ContactPhone, string.Format("*{0}*", key.ToLower()))
  20. //这样查询,默认分词检索(相当于  like '%第一个词%' or like '%第二个词%' or like '%第三个词%')
  21. //而实际情况只需要 查询  like '%韩世平%'
  22. //  q.Match(mq => mq.Field(f => f.OrderID).Analyzer(key.ToLower()))
  23. //|| q.Match(mq => mq.Field(f => f.ContactName == key))
  24. //|| q.Match(mq => mq.Field(f => f.ContactMobile).Query(key))
  25. //|| q.Match(mq => mq.Field(f => f.ContactPhone).Query(key))
  26. )
  27. );
  28. //查询出来的结果对象
  29. List<Orders> ResultList = response.Documents.ToList();</span><span style="font-size:32px;font-weight: bold;">
  30. </span>

2.3   修改

  1. <span style="font-weight: bold; font-size: 32px;">    </span><span style="font-size:10px;">//实例化 ElascticSearch 操作对象
  2. ElasticClient client = GetSearchClient();
  3. //实例化修改对象
  4. Orders orderModel = new Orders()
  5. {
  6. ContactName = "IT交流互助 Q群: 79190545",    //需要修改的数据,不需要修改的可以不写
  7. };
  8. //实例化 请求修改对象
  9. UpdateRequest<Orders, Orders> updRequest = new UpdateRequest<Orders, Orders>(
  10. "order",            //_index  :索引
  11. "orderhis",         //_type   :类型
  12. "R1401001950922"    //_id     :标示ID
  13. )
  14. {
  15. Doc = orderModel,   //需要求改的对象
  16. };
  17. //调用修改
  18. IUpdateResponse<Orders> updResponse = client.Update<Orders>(updRequest);
  19. if (updResponse.IsValid)
  20. {
  21. //操作成功
  22. }
  23. else
  24. {
  25. //操作失败
  26. }
  27. </span>

2.4   删除

    1. <span style="font-weight: bold; font-size: 32px;">    </span><span style="font-size:10px;">//实例化 ElascticSearch 操作对象
    2. ElasticClient client = GetSearchClient();
    3. //实例化删除请求对象
    4. DocumentPath<Orders> docPath = new DocumentPath<Orders>(
    5. "R1401001950922"    //_id   :标示ID
    6. );
    7. IDeleteResponse delResponse = client.Delete<Orders>(
    8. docPath,               //需要删除的对象
    9. p => p
    10. .Index("order")        //_index  :索引
    11. .Type("orderhis")      //_type   :类型
    12. );
    13. if (delResponse.IsValid)
    14. {
    15. //操作成功
    16. }
    17. else
    18. {
    19. //操作失败
    20. }</span><span style="font-weight: bold; font-size: 32px;">
    21. </span>

Elasticsearch入门CRUD(新增、查询、修改、删除)的更多相关文章

  1. mysql 数据库 添加查询 修改 删除

    cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据)   一 查看数据库.表.数据字段.数据 1 首先配置环境变量 进入mysql  或者通过一键集成工具 打开mysql命令行   ...

  2. ElasticSearch.net NEST批量创建修改删除索引完整示例

    本示例采用Elasticsearch+Nest 网上查了很多资料,发现用C#调用Elasticsearch搜索引擎的功能代码很分散,功能不完整,多半是非常简单的操作,没有成型的应用示例.比如新增或修改 ...

  3. ElasticSearch入门3: 高级查询

    单字段 模糊匹配查询与精准查询 postman请求 POST 127.0.0.1:9200/book/_search 请求json: { "query":{ "match ...

  4. elasticsearch 中文API 基于查询的删除(九)

    基于查询的删除API 基于查询的删除API允许开发者基于查询删除一个或者多个索引.一个或者多个类型.下面是一个例子. import static org.elasticsearch.index.que ...

  5. Python全栈day21(作业针对一个文件进行查询修改删除的操作练习)

    需求,有一个配置文件test.conf内容如下 backend www1 server 1 server 2 backend www2 server 3 server 4 add [{'backend ...

  6. cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据)

    一 查看数据库.表.数据字段.数据 1 首先配置环境变量 进入mysql  或者通过一键集成工具 打开mysql命令行  或者mysql 可视化工具 打开命令行 进入这样的界面   不同的机器操作不同 ...

  7. 解决mysql表不能查询修改删除等操作并出现卡死

    问题现象1:进程wait卡住 测试环境mysql出现了一个怪表:select查询表卡死,alter修改表卡死,甚至我不想要这个表了,delete.truncate.drop表都卡死卡主了...... ...

  8. ext,exrReturn新增,修改删除等用

    package cn.edu.hbcf.common.vo; /** * Ext Ajax 返回对象 * * @author * @date 2012-02-21 19:30:00 * */ publ ...

  9. Elasticsearch入门教程(六):Elasticsearch查询(二)

    原文:Elasticsearch入门教程(六):Elasticsearch查询(二) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:h ...

随机推荐

  1. 0. ACM系列算法

    0.1 数学 0.1.1 概率 http://www.cnblogs.com/jiu0821/tag/%E6%A6%82%E7%8E%87/ 0.1.2 代数 0.1.2.1 Polya 0.1.2. ...

  2. PLSQL Developer工具的使用

    1.运行 2.字体大小 导入csv文件. 任何工具都有失败的可能, 这个时候,也失败了. 当然还有另一种可能,文件被人为改过了,括号改过了,就即使使用下面的kettle工具也没用了.这时可以导出文件对 ...

  3. 两个链表的交叉 · Intersection of Two Linked Lists

    [抄题]: Write a program to find the node at which the intersection of two singly linked lists begins. ...

  4. 使用vim鼠标右键无法粘贴问题解决

    问题: Debian中通过终端使用vim,无法通过鼠标粘贴.这是由于一项默认的鼠标配置导致. 解决方法: vi /usr/share/vim/vim80/defaults.vim 查找set mous ...

  5. LAMP环境配置踩坑2外网无法访问

    理论上我们配置LAMP环境的时候都会对httpd.config进行更改 vi /etc/httpd/conf/httpd.conf 把override node改成override all 并且开启8 ...

  6. 利用Word发布文章到博客

    目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...

  7. [Selenium With C#基础教程] Lesson-02 Web元素定位

    作者:Surpassme 来源:http://www.jianshu.com/p/cfd4ed1daabd 声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢. 使用Selenium ...

  8. EBS R12 更改SYSADMIN密码

    SQL> select * from v$version; BANNER------------------------------------------------------------- ...

  9. java-01 JAVA三大版本比较&JDK、JRE、JVM 的关系

    1. java三大版本比较 1.1 java SE javaSE 是java标准版的简称,其定位是个人计算机应用(应用原生界面比较ugly) 全称:Java Platform Standard Edi ...

  10. MVC v5.1 Preview 包含 web api 2.1 web pages 3.1

    Includes ASP.NET MVC 5.1, Web API 2.1, and Web Pages 3.1 preview release. This was released marked a ...