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. binary tree

    一.中序线索化 二叉树节点定义: class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; int isle ...

  2. Shader.WarmupAllShaders

    [Shader.WarmupAllShaders]

  3. Unix高级编程Note3

    [Unix高级编程Note3] 1.RECURSIVE锁可以递归,普通锁只会死锁 2.线程安全函数 3.线程私有数据 4.pthread_once 5.线程取消点 6.线程信号 7.pread 8.d ...

  4. SQL Server判断数据库、表、存储过程、函数是否存在

    --判断数据库是否存在 if exists (select * from sys.databases where name = '数据库名') drop database [数据库名] --判断表是否 ...

  5. MongoDB中使用的SCRAM-SHA1认证机制

    摘要: 介绍 SCRAM是密码学中的一种认证机制,全称Salted Challenge Response Authentication Mechanism. SCRAM适用于使用基于『用户名:密码』这 ...

  6. redis的订阅和发布

    #订阅和发布有什么用呢?# 特点# 1.实现一个一对多的效果,只有一个发布者,多个订阅者# 2.实时的发布消息,广播方发布消息,所有的订阅者都会受到消息,一个人同时只能接受#一个频道 1.先写一个公共 ...

  7. IPMI设置与使用(远程控制服务器)

    如果服务器crash了或者就hang住了,我们不必要跑到机房去按电源键的,因为我们也想“运筹帷幄之中,决胜千里之外”嘛.我们可以用IPMI,它可以让我们远程用一条命令开启(关闭.重启)一台服务器,也可 ...

  8. yarn 完美替代 npm

    众所周知,npm是nodejs默认的包管理工具,我们通过npm可以下载安装或者发布包,但是npm其实存在着很多小问题,比如安装速度慢.每次都要在线重新安装等,而yarn也正是为了解决npm当前存在的问 ...

  9. Display PDF in browser | Acrobat, Reader XI

    点这个链接查看详细的解决办法 http://helpx.adobe.com/acrobat/using/display-pdf-browser-acrobat-xi.html When you cli ...

  10. html符号转换

    通常情况下,HTML会自动截去多余的空格.不管你加多少空格,都被看做一个空格.比如你在两个字之间加了10个空格,HTML会截去9个空格,只保留一个.为了在网页中增加空格,你可以使用 表示空格.最常用的 ...