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 ...
随机推荐
- kafka启动报java.net.UnknownHostException
kafka启动报java.net.UnknownHostException 参考资料: 1.https://blog.csdn.net/zdxiq000/article/details/6258765 ...
- 01-A-1: 计算
- 使用SQL查询所有数据库名和表名
使用SQL查询所有数据库名和表名 MySQL中查询所有数据库名和表名 查询所有数据库 show databases; 1 1 查询指定数据库中所有表名 select table_name from i ...
- RemoteExt 远程验证
public class RemoteExtAttribute : RemoteAttribute { private string _resourceKey; public RemoteExtAtt ...
- Spring JMX之三:通知的处理及监听
通过查询MBean获得信息只是查看应用状态的一种方法.但当应用发生重要事件时,如果希望 能够及时告知我们,这通常不是最有效的方法. 例如,假设Spittr应用保存了已发布的Spittle数量,而我们希 ...
- MDK5使用技巧
1.文本美化 修改 修改字体以及颜色如下: 修改用户自定义的关键字,如下: 代码编辑技巧 1.TAB键的妙用 使用TAB键可以整体向右移动相应位,使用SHIFT+TAB键整体左移相应位. 2.快速定位 ...
- 实战:MySQL Sending data导致查询很慢的问题详细分析(转)
出处:http://blog.csdn.net/yunhua_lee/article/details/8573621 这两天帮忙定位一个MySQL查询很慢的问题,定位过程综合各种方法.理论.工具,很有 ...
- 年末福利,C/S应用升级更新完整解决方案放送
程序员,工作累寿命短,大家应该学会分享,别浪费有限的生命与健康做重复的事情. C/S方式实现的应用有个升级更新功能是必需的,以前整过一个但是没考虑多套C/S应用的情况,那个时候公司只有一套系统,现在又 ...
- 安装Oracle数据库时出现网络配置需求检查失败
提示方法:将 Microsoft LoopBack Adapter 配置为系统的主网络适配器. 解决方法: 控制面板->添加硬件->是,(win7及之后没有添加硬件这个选项了,可以在c ...
- windows7文件夹怎样默认图片大图显示?
先打开一个含有图片的文件夹,在文件夹空白处右键选择属性,打开自定义选项卡. 确定自定义选项卡 显示的是:“优化此文件夹:图片”. 然后,选择:组织--文件夹和搜索选项--查看--文件夹视图,应用到文件 ...