IT交流互助QQ群:79190545 (Sql Server / Java / Asp.Net / C# / JS / Jquery / Oracle / My Sql / )
-- 欢迎大家进来 聊天,交流 !!。(定期清理 不说话、潜水太深的同学)
1. 项目中引用 Elasticsearch.Net
Elasticsearch 其他版本可在: http://www.nuget.org/ 找到对应的项目以源码 !
本文以 2.4.1版本为例
首先我们打开项目,点击-工具--》NuGet 包管理器--》程序包管理器控制台
在控制台输入安装命令: Install-Package NEST -Version 2.4.1 (然后回车确认安装)
如图:
安装成功:
2. 项目中CRUD案例
首先根据数据对象 创建Model 类。
并且在字段属性上面加上 : [JsonProperty("字段名")]
<span style="font-size:10px;">using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.Web; namespace WebApplication1.Models { // [DataContract] public class Orders { // [DataMember] [JsonProperty("OrderID")] //Newtonsoft.Json 命名空间 public string OrderID { get; set; } [JsonProperty("IsPackageOrder")] public int IsPackageOrder { get; set; } [JsonProperty("PackageOrderID")] public string PackageOrderID { get; set; } [JsonProperty("CRSResvID")] public string CRSResvID { get; set; } [JsonProperty("GuaranteeModeCode")] public string GuaranteeModeCode { get; set; } [JsonProperty("HotelID")] public string HotelID { get; set; } [JsonProperty("GuestSrcCode")] public string GuestSrcCode { get; set; } [JsonProperty("HotelDiscountCode")] public string HotelDiscountCode { get; set; } [JsonProperty("MemberCardTypeCode")] public string MemberCardTypeCode { get; set; } [JsonProperty("ResvRouteCode")] public string ResvRouteCode { get; set; } [JsonProperty("GuestID")] public string GuestID { get; set; } [JsonProperty("AgreementID")] public string AgreementID { get; set; } [JsonProperty("MemberCardNo")] public string MemberCardNo { get; set; } [JsonProperty("TeamID")] public string TeamID { get; set; } [JsonProperty("Amount")] public string Amount { get; set; } [JsonProperty("ContactName")] public string ContactName { get; set; } [JsonProperty("ContactMobile")] public string ContactMobile { get; set; } [JsonProperty("ContactPhone")] public string ContactPhone { get; set; } [JsonProperty("ContactFax")] public string ContactFax { get; set; } [JsonProperty("ContactEmail")] public string ContactEmail { get; set; } [JsonProperty("Remark1")] public string Remark1 { get; set; } [JsonProperty("Remark2")] public string Remark2 { get; set; } [JsonProperty("ResvTime")] public string ResvTime { get; set; } [JsonProperty("ResvCityCode")] public string ResvCityCode { get; set; } [JsonProperty("IsPrePaid")] public int IsPrePaid { get; set; } [JsonProperty("OrderStatusCode")] public string OrderStatusCode { get; set; } [JsonProperty("CancelReasonCode")] public string CancelReasonCode { get; set; } [JsonProperty("ConfirmTypeCode")] public string ConfirmTypeCode { get; set; } [JsonProperty("InputStartTime")] public string InputStartTime { get; set; } [JsonProperty("InputSpanMS")] public int InputSpanMS { get; set; } [JsonProperty("InputWorkNo")] public string InputWorkNo { get; set; } [JsonProperty("CreatedOn")] public string CreatedOn { get; set; } [JsonProperty("ModifiedBy")] public string ModifiedBy { get; set; } [JsonProperty("ModifiedOn")] public string ModifiedOn { get; set; } [JsonProperty("TimeStamp")] public string TimeStamp { get; set; } [JsonProperty("CRSOldResvRouteCode")] public string CRSOldResvRouteCode { get; set; } [JsonProperty("ActualDiscount")] public float ActualDiscount { get; set; } [JsonProperty("AgentName")] public string AgentName { get; set; } [JsonProperty("DiscountTypeTag")] public int DiscountTypeTag { get; set; } [JsonProperty("FixedPrice")] public string FixedPrice { get; set; } [JsonProperty("AgentCode")] public string AgentCode { get; set; } [JsonProperty("IsApartment")] public int IsApartment { get; set; } [JsonProperty("TeamProtocalID")] public string TeamProtocalID { get; set; } [JsonProperty("InvoiceTitle")] public string InvoiceTitle { get; set; } [JsonProperty("PointIncrementalTimes")] public string PointIncrementalTimes { get; set; } [JsonProperty("ResvType")] public string ResvType { get; set; } } }</span>
/// <summary> /// 创建客户端实例 /// </summary> /// <returns></returns> private static ElasticClient GetSearchClient() { //服务器IP地址: 端口号 。(Elasticsearch默认端口:9200) var node = new Uri("http://192.168.210.31:9200"); var settings = new ConnectionSettings(node); var client = new ElasticClient(settings); //验证索引是否存在 if (!client.IndexExists("order").Exists) { client.CreateIndex("order"); //索引 } //返回Elasticsearch 操作实例 return client; }
2.1 新增
<span style="font-size:10px;"> //操作ElasticSearch实例 ElasticClient client = GetSearchClient(); //新增对象实例化 Orders orderModel = new Orders(); //赋值 orderModel.OrderID = "79190545"; orderModel.ContactName = "IT交流互助 QQ群: 79190545"; //初始化插入对象 IIndexRequest<Orders> o = new IndexRequest<Orders>( "order", //_index :索引 "orderhis", //_type :类型 orderModel.OrderID //_id :标示ID ) { Document = orderModel, //新增数据对象 }; //调用新增 IIndexResponse inxResponse = client.Index(o); if (inxResponse.IsValid) { //操作成功 } else { //操作失败 }</span>
2.2 查询
<span style="font-size:32px;font-weight: bold;"> </span><span style="font-size:10px;">string key = "IT交流互助 群: 79190545"; // 需要查询的内容 int ix = 1; //当前页数 //实例化 ElasticSearch 操作对象 ElasticClient client = GetSearchClient(); //执行查询 var response = client.Search<Orders>(s => s .From((ix - 1) * 5) //起始页 .Size(5) //每页条数 .Query(q => //查询筛选条件 //这样就查询不出来 // q.Wildcard(t => t.ContactName, string.Format("*{0}*", key.ToLower())) || //精确查找 // q.Term(t => t.OrderID, key.ToLower()) //|| q.Term(t => t.ContactMobile, key.ToLower()) //|| q.Term(t => t.ContactPhone, key.ToLower()) //模糊检索 q.Wildcard(t => t.OrderID, string.Format("*{0}*", key.ToLower())) || q.Wildcard(t => t.ContactMobile, string.Format("*{0}*", key.ToLower())) || q.Wildcard(t => t.ContactPhone, string.Format("*{0}*", key.ToLower())) //这样查询,默认分词检索(相当于 like '%第一个词%' or like '%第二个词%' or like '%第三个词%') //而实际情况只需要 查询 like '%韩世平%' // q.Match(mq => mq.Field(f => f.OrderID).Analyzer(key.ToLower())) //|| q.Match(mq => mq.Field(f => f.ContactName == key)) //|| q.Match(mq => mq.Field(f => f.ContactMobile).Query(key)) //|| q.Match(mq => mq.Field(f => f.ContactPhone).Query(key)) ) ); //查询出来的结果对象 List<Orders> ResultList = response.Documents.ToList();</span><span style="font-size:32px;font-weight: bold;"> </span>
2.3 修改
<span style="font-weight: bold; font-size: 32px;"> </span><span style="font-size:10px;">//实例化 ElascticSearch 操作对象 ElasticClient client = GetSearchClient(); //实例化修改对象 Orders orderModel = new Orders() { ContactName = "IT交流互助 Q群: 79190545", //需要修改的数据,不需要修改的可以不写 }; //实例化 请求修改对象 UpdateRequest<Orders, Orders> updRequest = new UpdateRequest<Orders, Orders>( "order", //_index :索引 "orderhis", //_type :类型 "R1401001950922" //_id :标示ID ) { Doc = orderModel, //需要求改的对象 }; //调用修改 IUpdateResponse<Orders> updResponse = client.Update<Orders>(updRequest); if (updResponse.IsValid) { //操作成功 } else { //操作失败 } </span>
2.4 删除
<span style="font-weight: bold; font-size: 32px;"> </span><span style="font-size:10px;">//实例化 ElascticSearch 操作对象 ElasticClient client = GetSearchClient(); //实例化删除请求对象 DocumentPath<Orders> docPath = new DocumentPath<Orders>( "R1401001950922" //_id :标示ID ); IDeleteResponse delResponse = client.Delete<Orders>( docPath, //需要删除的对象 p => p .Index("order") //_index :索引 .Type("orderhis") //_type :类型 ); if (delResponse.IsValid) { //操作成功 } else { //操作失败 }</span><span style="font-weight: bold; font-size: 32px;"> </span>
IT交流互助QQ群:79190545 (Sql Server / Java / Asp.Net / C# / JS / Jquery / Oracle / My Sql / )
-- 欢迎大家进来 聊天,交流 !!。(定期清理 不说话、潜水太深的同学)
时间: 2024-10-12 18:36:15