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. 将bmp文件转换为jpg文件

    procedure TForm1.Button1Click(Sender: TObject);(*压缩MBP为JPEG;但是没有提供压缩比可选项凑合用吧,大概1/3 ^_^:Note:必须加上JPEG ...

  2. node.js和npm离线安装

    离线安装node.js和npm 1.下载官方安装包并拷贝到离线机器上. 官方下载地址:https://nodejs.org/en/download/ 2.解压文件: tar-xJf node-v8.9 ...

  3. java中回调函数的使用

    package com.huawei.common; import java.sql.ResultSet;import java.sql.SQLException; /** * 回调函数 * @aut ...

  4. 图解Java常用数据结构(一)

    最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList Linke ...

  5. mysql 求2个坐标之间的距离

    CREATE DEFINER=`root`@`%` FUNCTION `f_GetDistance`(lng1 DOUBLE,lat1 DOUBLE,lng2 DOUBLE,lat2 DOUBLE) ...

  6. [Selenium] Java代码获取屏幕分辨率

    import java.awt.Dimension; import java.awt.GraphicsEnvironment; import java.awt.Insets; import java. ...

  7. Composer安装和使用 - Windows

    记录windows下安装和使用Composer的方法 1,使用安装程序 这是将 Composer 安装在你机器上的最简单的方法. 下载并且运行 Composer-Setup.exe,它将安装最新版本的 ...

  8. Redis数据结构(六)

    Redis数据结构(Sort-set)(游戏排名和微博热点话题排名上应用): 特点:可存储有序但不重复的数据,根据分数指定存储顺序 1 Sort-set和Set的区别: (1)sort的每个成员都是以 ...

  9. ORA-00054、ORA-08002

    https://docs.oracle.com/cd/B10501_01/server.920/a96525/e7500.htm ORA-00054 resource busy and acquire ...

  10. struts2 动态Action

    1.java 2.struts.xml struts2.5,默认关闭动态Action,着色的是开启和使用动态action 3.JSP 小结:访问时,用!后跟方法名的方法,方法返回值----->r ...