Elasticsearch入门CRUD(新增、查询、修改、删除)

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

Elasticsearch入门CRUD(新增、查询、修改、删除)的相关文章

ElasticSearch.net NEST批量创建修改删除索引完整示例

本示例采用Elasticsearch+Nest 网上查了很多资料,发现用C#调用Elasticsearch搜索引擎的功能代码很分散,功能不完整,多半是非常简单的操作,没有成型的应用示例.比如新增或修改索引,都是发起一个request新增或修改一条数据,当一次性修改几千条数据时,发起的requst请求过多容易导致429 Too Many Request的错误,单个新增修改索引就非常不适用.其实Nest有批量新增.修改索引的功能,批量删除也可以.现将项目中采用Elasticsearch的C#代码分享

elasticsearch 中文API 基于查询的删除(九)

基于查询的删除API 基于查询的删除API允许开发者基于查询删除一个或者多个索引.一个或者多个类型.下面是一个例子. import static org.elasticsearch.index.query.FilterBuilders.*; import static org.elasticsearch.index.query.QueryBuilders.*; DeleteByQueryResponse response = client.prepareDeleteByQuery("test&q

ElasticSearch入门3: 高级查询

尊重原创:https://www.cnblogs.com/liuxiaoming123/p/8124969.html 单字段 模糊匹配查询与精准查询 postman请求 POST 127.0.0.1:9200/book/_search 请求json: { "query":{ "match":{ "name":"晓明9" } } } 注:match 模糊查询的标识 :查询内容自动拆分成分词来查询 若match 改为 match_

数据库SQList 添加 查询 修改 删除

SQListActivity 1 package com.example.administrator.myapplication.database.Activity; 2 3 import android.content.ContentValues; 4 import android.database.Cursor; 5 import android.database.sqlite.SQLiteDatabase; 6 import android.os.Bundle; 7 import andr

cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据)

一 查看数据库.表.数据字段.数据 1 首先配置环境变量 进入mysql  或者通过一键集成工具 打开mysql命令行  或者mysql 可视化工具 打开命令行 进入这样的界面   不同的机器操作不同,这里就不一一描述了 2 查看当前所有的数据库 show  databases: 3 选择(进入) 数据库 use   数据库名: 4  查看当前数据库所有的表 show tables: 5 查看 某个表的字段结构 desc  表明: 6 查询表数据 select * from  表名: 二  新建

ext,exrReturn新增,修改删除等用

package cn.edu.hbcf.common.vo; /** * Ext Ajax 返回对象 * * @author * @date 2012-02-21 19:30:00 * */ public class ExtReturn { private boolean success; // 是否成功 private Object msg; // 返回消息 private Object otherObject;// 其他对象 public ExtReturn() { } /** * 是否更新

Spring Boot(3) H2数据库新增、修改、查询、删除

#Java#Spring#SpringBoot#H2#数据库#新增#修改#查询#删除# SpringBoot H2数据库新增.修改.查询.删除 视频讲解: https://www.bilibili.com/video/av83944935/ H2Application.java package com.example.h2;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoc

Elasticsearch入门教程(五):Elasticsearch查询(一)

原文:Elasticsearch入门教程(五):Elasticsearch查询(一) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/vbirdbest/article/details/79228852 // 准备数据 PUT /shop/goods/1 { "name": "2017新款女装冬季外套ulzzang棉袄中长款棉衣韩版百搭棉服面包服", &quo

Elasticsearch入门教程(六):Elasticsearch查询(二)

原文:Elasticsearch入门教程(六):Elasticsearch查询(二) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/vbirdbest/article/details/79237950 地理坐标点geo-point 地理坐标点:是指地球表面可以用经纬度描述的一个点. 地理坐标点可以用来计算两个坐标间的距离,还可以判断一个坐标是否在一个区域中,或在聚合中. 地理坐标点不能被