Elasticsearch入门CRUD(新增、查询、修改、删除)
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>
Elasticsearch入门CRUD(新增、查询、修改、删除)的更多相关文章
- mysql 数据库 添加查询 修改 删除
cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据) 一 查看数据库.表.数据字段.数据 1 首先配置环境变量 进入mysql 或者通过一键集成工具 打开mysql命令行 ...
- ElasticSearch.net NEST批量创建修改删除索引完整示例
本示例采用Elasticsearch+Nest 网上查了很多资料,发现用C#调用Elasticsearch搜索引擎的功能代码很分散,功能不完整,多半是非常简单的操作,没有成型的应用示例.比如新增或修改 ...
- ElasticSearch入门3: 高级查询
单字段 模糊匹配查询与精准查询 postman请求 POST 127.0.0.1:9200/book/_search 请求json: { "query":{ "match ...
- elasticsearch 中文API 基于查询的删除(九)
基于查询的删除API 基于查询的删除API允许开发者基于查询删除一个或者多个索引.一个或者多个类型.下面是一个例子. import static org.elasticsearch.index.que ...
- Python全栈day21(作业针对一个文件进行查询修改删除的操作练习)
需求,有一个配置文件test.conf内容如下 backend www1 server 1 server 2 backend www2 server 3 server 4 add [{'backend ...
- cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据)
一 查看数据库.表.数据字段.数据 1 首先配置环境变量 进入mysql 或者通过一键集成工具 打开mysql命令行 或者mysql 可视化工具 打开命令行 进入这样的界面 不同的机器操作不同 ...
- 解决mysql表不能查询修改删除等操作并出现卡死
问题现象1:进程wait卡住 测试环境mysql出现了一个怪表:select查询表卡死,alter修改表卡死,甚至我不想要这个表了,delete.truncate.drop表都卡死卡主了...... ...
- ext,exrReturn新增,修改删除等用
package cn.edu.hbcf.common.vo; /** * Ext Ajax 返回对象 * * @author * @date 2012-02-21 19:30:00 * */ publ ...
- Elasticsearch入门教程(六):Elasticsearch查询(二)
原文:Elasticsearch入门教程(六):Elasticsearch查询(二) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:h ...
随机推荐
- binary tree
一.中序线索化 二叉树节点定义: class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; int isle ...
- Shader.WarmupAllShaders
[Shader.WarmupAllShaders]
- Unix高级编程Note3
[Unix高级编程Note3] 1.RECURSIVE锁可以递归,普通锁只会死锁 2.线程安全函数 3.线程私有数据 4.pthread_once 5.线程取消点 6.线程信号 7.pread 8.d ...
- SQL Server判断数据库、表、存储过程、函数是否存在
--判断数据库是否存在 if exists (select * from sys.databases where name = '数据库名') drop database [数据库名] --判断表是否 ...
- MongoDB中使用的SCRAM-SHA1认证机制
摘要: 介绍 SCRAM是密码学中的一种认证机制,全称Salted Challenge Response Authentication Mechanism. SCRAM适用于使用基于『用户名:密码』这 ...
- redis的订阅和发布
#订阅和发布有什么用呢?# 特点# 1.实现一个一对多的效果,只有一个发布者,多个订阅者# 2.实时的发布消息,广播方发布消息,所有的订阅者都会受到消息,一个人同时只能接受#一个频道 1.先写一个公共 ...
- IPMI设置与使用(远程控制服务器)
如果服务器crash了或者就hang住了,我们不必要跑到机房去按电源键的,因为我们也想“运筹帷幄之中,决胜千里之外”嘛.我们可以用IPMI,它可以让我们远程用一条命令开启(关闭.重启)一台服务器,也可 ...
- yarn 完美替代 npm
众所周知,npm是nodejs默认的包管理工具,我们通过npm可以下载安装或者发布包,但是npm其实存在着很多小问题,比如安装速度慢.每次都要在线重新安装等,而yarn也正是为了解决npm当前存在的问 ...
- Display PDF in browser | Acrobat, Reader XI
点这个链接查看详细的解决办法 http://helpx.adobe.com/acrobat/using/display-pdf-browser-acrobat-xi.html When you cli ...
- html符号转换
通常情况下,HTML会自动截去多余的空格.不管你加多少空格,都被看做一个空格.比如你在两个字之间加了10个空格,HTML会截去9个空格,只保留一个.为了在网页中增加空格,你可以使用 表示空格.最常用的 ...