Elasticsearch.Net使用(一)【入门篇】

elasticsearch环境的安装---入门篇一 Elasticsearch(一) 1 Elasticsearch简介 1.1 Elasticsearch介绍 ElasticSearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。 1、ES:它就是一个全文检索服务器,基于luc 阅读详情

首先去官网下载Elasticsearch 2.3.4安装包,解压后,在cmd命令行进入安装目录,再进入 bin目录,运行elasticsearch.bat命令

elasticsearch插件elasticsearch-head安装:
bin目录下执行命令plugin -install mobz/elasticsearch-head

然后开始.net编程,构建控制台应用程序

Program.cs代码如下:

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("*Program 开始运行 : "  + DateTime.Now);
            var business = new Business();

            var swRead = new Stopwatch();
            //swRead.Start();
            //business.AddToDb();//sqlserver数据库增加数据
            //swRead.Stop();
            //Console.WriteLine("DB 写入时间  : " + swRead.ElapsedMilliseconds);

            //swRead.Reset();
            //swRead.Start();
            //business.AddToElasticIndex();
            //swRead.Stop();
            //Console.WriteLine("ES 写入时间  : " + swRead.ElapsedMilliseconds);
            
            var sw = new Stopwatch();
            sw.Start();
            var personsFromDB = business.GetFromDB();
            sw.Stop();
            Console.WriteLine("DB 读时间  : " + sw.ElapsedMilliseconds);
            
            sw.Reset();
            sw.Start();
            var personsFromEs = business.GetFromES();
            sw.Stop();
            Console.WriteLine("ES 读时间  : " + sw.ElapsedMilliseconds);

            Console.ReadLine();
        }
    }
BLL层的Business.cs类:

public class Business
    {
        private List<PersonDetail> _personList = new List<PersonDetail>();
        
        //SQLSERVER数据库
        PersonDbProvider dbProvider = new PersonDbProvider();

        //ElasticSearch
        ESProvider esProvider = new ESProvider();

        public void AddToDb()
        {
            _personList = Util.Get10000PersonDetails();//辅助类,生成10000条数据

            foreach (var personDetail in _personList)
            {
                dbProvider.AddPerson(personDetail);
            }
        }

        public void AddToElasticIndex()
        {
            _personList = Util.Get10000PersonDetailsWithID();
            foreach (var personDetail in _personList)
            {
                esProvider.Index(personDetail);
            }
        }

        public List<PersonDetail> GetFromDB()
        {
            return dbProvider.GetAllPersonDetails();
        }

        public List<PersonDetail> GetFromES()
        {
            return esProvider.GetAll();
        }

    }
PersonDbProvider.cs和ElasticSearchProvider.cs以及Util.cs,Setting.cs类:

 public class PersonDbProvider
    {
        public bool AddPerson(PersonDetail personDetail)
        {
            try
            {   //数据库上下文
                using (var db = new PersonContext())
                {
                    db.PersonDetails.Add(personDetail);
                    db.SaveChanges();
                    return true;
                }
            }
            catch (Exception)
            {
                return false;
            }
        }

        public List<PersonDetail> GetAllPersonDetails()
        {
            try
            {
                using (var db = new PersonContext())
                {
                    return db.PersonDetails.ToList();
                }
            }
            catch (Exception)
            {
                return null;
            }
        }
    }
 public class ESProvider
    {
        public static ElasticClient client = new ElasticClient(Setting.ConnectionSettings);

        public bool Index(PersonDetail person)
        {
            var client = new ElasticClient(Setting.ConnectionSettings);
            try
            {
                //添加数据 
                //在调用下面的index方法的时候,如果没有指定使用哪个index,ElasticSearch会直接使用我们在setting中的defaultIndex,如果没有,则会自动创建
                var index = client.Index(person);
                return index.Created;
            }
            catch (Exception ex)
            {
                Console.WriteLine(" Excepton Message : " + ex.Message);
            }
            return false;
        }


        public List<PersonDetail> GetAll()
        {
            var searchResults = client.Search<PersonDetail>(s => s
                .From(0)
                .Size(10000)
                );
            return searchResults.Documents.ToList();
        }

        public List<PersonDetail> GetEntities(string keyword)
        {
            var client = new ElasticClient(Setting.ConnectionSettings);

            #region 全文搜索

            keyword = String.Format("*{0}*", keyword);
            //默认的Operator是Or,当keyword是类似于"One Two"之类的中间有空格的时候,会被当成两个关键词搜索,然后搜索结果进行or运算
            //所以我们需要根据需求来调整Operator
            var searchResults = client.Search<PersonDetail>(s => s
                .Index("elastic-search-app")
                .Query(q => q.QueryString(qs => qs.Query(keyword).DefaultOperator(Operator.And)))
                );

            //--------------------------------------------------------------------------------------
            //另外由于ES是分词搜索,所以当我们要用"One"来搜索完整的单词"JustOne"的时候,就必须在"One"外面添加**,类似于SQL里面的%keyword%,但是这样的做法会导致在用完整的单词来搜索的时候搜索不到结果,所以我们需要使用下面的方式

            //wholeKeyword = keyword;
            //keyword = String.Format("*{0}*", keyword);
            //QueryContainer query = new QueryStringQuery() { Query = keyword, DefaultOperator = Operator.And };
            //if (!String.IsNullOrEmpty(wholeKeyword))
            //{
            //    QueryContainer wholeWordQuery = new QueryStringQuery() { Query = wholeKeyword };
            //    query = query || wholeWordQuery;
            //}
            //var searchResults = client.Search<Person>(s => s
            //    .Index("zhixiao-application")
            //    .Query(query)
            //);

            #endregion

            #region 指定属性搜索

            //使用term Query
            //Term是一个被索引的精确值,也就是说Foo, foo, FOO是不相等的,因此
            //在使用term query的时候要注意,term query在搜索的Field已经被索引的时候,是不支持大写的。
            // QueryContainer query2 = new TermQuery { Field = item.Key, Value = item.Value.ToLower() };
            //--------------------------------------------------------------------------------------
            //var searchResults = client.Search<PersonDetail>(s => s
            //    .Index("elastic-search-app")
            //    .Query(q => q.Term(t => t.OnField(f => f.LastName == "keyword")))
            //);
            //效果同上
            //QueryContainer termQuery = new TermQuery { Field = "lastname", Value = "keyword" };
            //var searchResults = client.Search<PersonDetail>(s => s
            //    .Index("elastic-search-app")
            //    .Query(termQuery)
            //);
            //--------------------------------------------------------------------------------------
            //使用 Query String query
            //QueryString query一般用于全文搜索,但是也可以用于单个属性的搜索(设置DefaultField属性),queryString query可以不区分大小写。QueryString还有一个好处就是我们可以搜索一个term中的一部分,
            //例如lastname为"t Boterhuis 1",那么我们可以用"terhuis"搜索到这个数据(虽然需要在外面包上**),在term query里面就做不到,因为ES把每一个属性的值都分析成一个个单独的term,提高了搜索的效率。 
            //keyword = "t Boterhuis 2";
            //QueryContainer wholeWordQuery = new QueryStringQuery() { Query = keyword, DefaultOperator = Operator.And };
            //var searchResults = client.Search<PersonDetail>(s => s
            //    .Index("elastic-search-app")
            //    .Query(wholeWordQuery)
            //);

            #endregion

            return searchResults.Documents.ToList();
        }

        public List<PersonDetail> Sort(string keyword)
        {
            // 首先我们把原先的索引先删除了
            var response =
                client.DeleteIndex(
                    new DeleteIndexRequest(new IndexNameMarker()
                    {
                        Name = "elastic-search-app",
                        Type = typeof(PersonDetail)
                    }));

            //然后重新创建索引
            var indexResult = client.CreateIndex("PD-application");
            var response1 = client.Map<PersonDetail>(m => m.MapFromAttributes());
            IEnumerable<PersonDetail> persons = new List<PersonDetail>
            {
                new PersonDetail()
                {
                    Id = 4,
                    FirstName = "Boterhuis-040",
                    LastName = "Gusto-040",
                },
                new PersonDetail()
                {
                    Id = 5,
                    FirstName = "sales@historichousehotels.com",
                    LastName = "t Boterhuis 1",
                },
                new PersonDetail()
                {
                    Id = 6,
                    FirstName = "Aberdeen #110",
                    LastName = "sales@historichousehotels.com",
                },
                new PersonDetail()
                {
                    Id = 7,
                    FirstName = "Aberdeen #110",
                    LastName = "t Boterhuis 2",
                },
            };
            foreach (var person in persons)
            {
                client.Index(person);
            }
            var searchResults = client.Search<PersonDetail>(s => s
                .Index("PD-application")
                .Sort(sort => sort.OnField(f => f.Id).Order(SortOrder.Ascending))

            );
            return searchResults.Documents.ToList();
        }
    }
 public static class Util
    {

        //生成10000条sqlserver测试数据
        public static List<PersonDetail> Get10000PersonDetails()
        {
            var personDetailsList = new List<PersonDetail>();
            
            for (int i = 0; i < 10000; i++)
            {
                personDetailsList.Add(new PersonDetail()
                {
                    FirstName = "FN" + new Random().Next(int.MaxValue),
                    LastName = "LN"  + new Random().Next(int.MaxValue)
                });
            }
            return personDetailsList;
        }

        //生成10000条ElasticSearch测试数据
        public static List<PersonDetail> Get10000PersonDetailsWithID()
        {
            var personDetailsList = new List<PersonDetail>();
            
            for (int i = 0; i < 10000; i++)
            {
                personDetailsList.Add(new PersonDetail()
                {
                    Id = i * new Random().Next(99),
                    FirstName = "FN" + new Random().Next(int.MaxValue),
                    LastName = "LN" + new Random().Next(int.MaxValue)
                });
            }
            return personDetailsList;
        }

    }
 public static class Setting
    {
        public static Uri Node
        {
            get
            {
                return new Uri("http://localhost:9200");
            }
        }
        //连接配置
        public static ConnectionSettings ConnectionSettings
        {
            get
            {
                return new ConnectionSettings(Node, defaultIndex: "es-index-app");
            }
        }

    }
Model层代码:

  public partial class PersonDetail
    {
        public long Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }

 public partial class PersonContext : DbContext
    {
        static PersonContext()
        {
            Database.SetInitializer<PersonContext>(null);
        }

        public PersonContext()
            : base("Name=PersonContext")
        {
        }

        public DbSet<PersonDetail> PersonDetails { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //在重写OnModelCreating方法中则可以直接调用映射类,从而减少了OnModelCreating方法的复杂度,同时也增强了代码维护的可读性
            modelBuilder.Configurations.Add(new PersonDetailMap());  //属性映射约定
        }
    }
 //Fluent API配置Configuration映射类
    public class PersonDetailMap : EntityTypeConfiguration<PersonDetail>
    {
        public PersonDetailMap()
        {
            // 主键
            this.HasKey(t => new { t.Id, t.FirstName, t.LastName });

            // 属性
            this.Property(t => t.Id)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

            this.Property(t => t.FirstName)
                .IsRequired();

            this.Property(t => t.LastName)
                .IsRequired();

            // 表 & 列 映射
            this.ToTable("PersonDetails");
            this.Property(t => t.Id).HasColumnName("Id");
            this.Property(t => t.FirstName).HasColumnName("FirstName");
            this.Property(t => t.LastName).HasColumnName("LastName");
        }
    }
sqlserver脚本:

USE [Person]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[PersonDetails](
	[Id] [bigint] IDENTITY(1,1) NOT NULL,
	[FirstName] [nvarchar](max) NOT NULL,
	[LastName] [nvarchar](max) NOT NULL
) ON [PRIMARY]

GO
结果图:










深入解析.NET中的Elasticsearch(ES)使用与实战 Elasticsearch是一个开源的分布式搜索引擎,基于Apache Lucene构建。它能够快速地存储、搜索和分析大量数据。分布式:数据分布在多个节点上,支持水平扩展。实时性:数据几乎可以实时地被索引和搜索。高可用性:通过副本机制保证数据的高可用性。强大的查询能力:支持复杂的查询和聚合操作。本文详细介绍了如何在.NET中使用Elasticsearch进行数据存储、检索和分析。通过Elasticsearch的分布式特性和强大的查询能力,我们可以轻松地处理大规模数据,并构建高效的搜索应用。 阅读详情

相关推荐

Elasticsearch的介绍 以及使用python操作es详细步骤

一. 什么是 Elasticsearch 想查数据就免不了搜索,搜索就离不开搜索引擎,百度、谷歌都是一个非常庞大复杂的搜索引擎,他们几乎索引了互联网上开放的所有网页和数据。然而对于我们自己的业务数据来说,肯定就没必要用这么复杂的技术了,如果我们想实现自己的搜索引擎,方便存储和检索,Elasticsearch 就是不二选择,它是一个全文搜索引擎,可以快速地储存、搜索和分析海量数据。 Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful w

数据知道的博客 4万+

ElasticSearch是一个基于Lucene的搜索服务器

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)...

weixin_30482383的博客 633

实战解析:基于Python的APT攻击检测与ATT&CK框架应用

本文通过实战案例,详细解析了如何利用Python编程语言结合MITRE ATT&CK框架,构建一套针对高级持续性威胁(APT)的自动化检测与狩猎系统。文章涵盖了从环境搭建、核心检测逻辑编写、到模块化框架设计与主动威胁狩猎的全过程,为安全从业者提供了可落地的技术方案,以有效应对复杂的网络攻击。

weixin_29044157的博客 388

.Net使用ElasticSearch

.Net使用ElasticSearch

黄瓜炒鸡蛋的博客 2325

告别校准烦恼:用ADS1220和松下ERA3电阻实现±0.05℃精度的Pt100测温方案(附完整电路图)

本文详细介绍了如何利用TI的ADS1220 24位ΔΣ ADC与松下ERA3系列精密电阻构建±0.05℃精度的免校准Pt100测温系统。通过比例测量法架构和关键器件选型,解决了传统方案中的校准繁琐和长期稳定性问题,特别适用于工业控制、医疗设备等高精度温度测量场景。

weixin_30740581的博客 611

03 Aras Innovator二次开发-服务端方法(二)

Aras Innovator二次开发-服务端方法书写

企业信息化(PLM,ERP.MES) 2013

Elasticsearch(二)【Elasticsearch.Net基本使用】

低级客户端ElasticLowLevelClient是一个低级的,无依赖的客户端,对如何构建和表示您的请求和响应没有意见。它可以从Visual Studio中的包管理器控制台安装使用Install-Package Elasticsearch.Net连接要连接到本地运行在http://localhost:9200上的Elasticsearch就像实例化客户端的一个新实例一样简单var lowlevel

极客神殿 9526

SAP数据导入工具(LSMW) 超级详细教程(批量导入内部订单)

用户提了个需求,让我批量导入内部订单几百个内部订单。我本打算用写段ABAP 代码来调用 BAPI (BAPI_INTERNALORDER_CREATE)就可以了。但想到我很久没有用过LSMW 了,都快要忘记了。于是我采用LSMW的方式,完成了任务。并把过程记录下来,形成教程方便我以后回头查看,分享出来也希望对大家有帮助。

IT小职员 2万+

elasticsearch.net search入门使用指南中文版

原文:http://edu.dmeiyang.com/book/nestusing.html elasticsearch.net为什么会有两个客户端? Elasticsearch.Net是一个非常底层且灵活的客户端,它不在意你如何的构建自己的请求和响应。它非常抽象,因此所有的Elasticsearch API被表示为方法,没有太多关于你想如何构建json/request/respon...

weixin_30426957的博客 564

从FER2013到AffectNet:表情识别数据集十年演进史与你的项目选型攻略

本文回顾了从FER2013到AffectNet等主流人脸表情识别数据集的十年演进历程,详细分析了各数据集的特点、适用场景及技术突破。针对不同项目需求,提供了从移动端应用到高精度研究的选型策略,特别强调AffectNet在现代FER项目中的核心价值,并给出混合数据集构建的实战方案。

weixin_26808439的博客 521

Windows 11 安装 JDK 11:下载、安装、配置环境变量、验证

本文详细介绍了在 Windows 11 系统中安装 JDK 11 的完整流程,包括从 Oracle 官网下载压缩包、解压到自定义目录、配置 JAVA_HOME 与 Path 环境变量,并验证安装是否成功。文章还包含一个专为 JDK 11 新特性设计的测试程序,涵盖 Lambda 表达式 var 语法、HTTP 客户端 API、字符串增强方法等,帮助读者确认安装版本正确无误,适合初学者和需要多版本 JDK 共存的开发者参考。

寒水馨 · 轻量级技术文档 · hanshuixin.org 2775

Elasticsearch简介及SpringBoot整合ES实例

Elasticsearch简介 1.1 Elasticsearch(以下简称ES)定义 Elasticsearch 是一个开源的搜索引擎。 建立在全文搜索引擎库 Apache Lucene 基础之上。它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。 Elasticsearch ...

weixin_42184707的博客 8860

3D扩散模型的构建与优化:多模态融合在三维物体生成中的作用【附核心代码实例】

随着技术的发展,基于扩散模型的3D内容生成已经成为一个激动人心的领域。通过不断优化扩散模型的结构和算法,结合多模态信息、视角控制和高效网络架构,未来的3D生成技术将不仅能够生成逼真的物体,还能满足虚拟现实、游戏设计、电影制作等行业对高质量、实时生成的需求。

一键难忘的博客 2862

.NET Core 下使用 ElasticSearch

快速入门Elasticsearch 快速入门ElasticSearch是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。Lucene 可以说是当下最...

阿星Plus 3563

道路缺陷检测实战指南:基于YOLOv11的深度学习系统从搭建到落地

道路缺陷检测项目的每一步,都是“理论→实践→反思→优化”的成长循环。当你看到自己开发的系统能精准识别出道路上的每一处裂缝、每一个坑洼时,那种“技术解决真实问题”的成就感,会让你明白深度学习不止是论文里的公式,更是改变行业的工具。如果过程中遇到模型不收敛、界面功能异常等问题,不妨把问题拆解成“数据是否标注准确?”“模型参数是否合理?”“界面逻辑是否有漏洞?”等小问题逐一排查。记住,每解决一个问题,你就离“能独立落地AI项目的工程师”更近一步。

LXY_LOVE36的博客 170

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

搜索引擎ElasticSearch分布式搜索和分析引擎学习,SpringBoot整合ES个人心得

ElasticSearch搜索和分析引擎学习笔记

HakerDONG的博客 2678

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ElasticSearch (ES)学习之路(一)ES 概念

ElasticSearch (ES)学习之路(一) 最近在自主学习全文检索技术中… 为什么咱们的数据库有了查询查询功能还要额外使用其余的搜索技术? 为什么要用搜索引擎?我们的所有数据在数据库里面都有,而且 Oracle、Mysql等数据库里也能提供查询检索或者聚类分析功能,直接通过数据库查询不就可以了吗?确实,我们大部分的查询功能都可以通过数据库查询获得,如果查询效率低下,还可以通过建数据库索引,优化SQL等方式进行提升效率,甚至通过引入缓存来加快数据的返回速度。如果数据量更大,就可以分库分表来分担查询压力

胖虎儿的博客 6840

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ElasticSearch学习第二篇:.net core中使用ES

前言 在上一篇文章《ElasticSearch学习第一篇:windows环境下安装使用》,我已经简单介绍了关于ES的安装部署及一些概念性的东西,还有一些简单的增删改查操作。本文主要也是做一些增删改查操作,不同的是,我们要通过代码来实现。 .net关于ES的客户端 在.net客户端中,官网给我们提供了两种客户端 ...

shaojiayong的博客 6103

.net core(.NET 6)搭建ElasticSearch(ES)系列之dotnet操作ElasticSearch进行存取的方法

需要注意的一点是,写入ES里面,ES默认有1秒时间是查不出来的,需要1秒以后才可以查到记录,对于实时性不是特别高,所以不适合用于做数据库,但是用于对实时性要求不高的数据来说,问题就不大了。注意,包版本需要和使用的ES的版本保持一致,可以避免因为不兼容所导致的一些问题。使用两种方法都可以查询,看个人喜好了~~ 同时,如果需要做一些可视化报表什么的,也都是可以使用的。没有wesky索引,可以开始启动程序(备注:正常使用期间不需要删除索引,会导致写入的数据丢失,我此处只是为了方便效果验证使用)。

xwnxwn的专栏 1723

【Elasticsearch 自学笔记一】什么是 ES? ES 的基本安装和使用

文章目录什么是 ES?Docker 安装 ESDocker 安装 Kibana配置 Docker 网络基本使用索引操作字段操作 Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。 Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 官方客户端在Java、.NE

Koorye今天自学了吗 506

LINQ 到 ES|QL:使用 C# 查询 Elasticsearch

Elasticsearch.NET客户端推出LINQ到ES|QL功能,允许开发者使用C# LINQ表达式自动转换为ES|QL查询。该功能从v9.3.4和v8.19.18版本开始提供,支持Where、Select、OrderBy等标准操作符,自动处理属性映射、参数化和结果反序列化。通过表达式树技术实现LINQ到ES|QL的转换,提供流式处理能力,并支持聚合、投影、函数库等高级功能。架构采用分层设计,包含纯翻译引擎、轻量级客户端和完整客户端三种使用方式,同时支持服务器端异步查询和原生ES|QL扩展。开发者可通过

Elastic 中国社区官方博客 724

一文理解全文搜索引擎(Lucene、Elasticsearch、Solr)、目录搜索引擎、元搜索引擎的异同

一、全文搜索引擎是什么?     计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。     全文搜索引擎主要有:Lucene、Elasticsearch、Solr。    Lucene,是一个开放源代码的全文检索引擎工具包,不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎。目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系

tonglingtou1875的博客 4911

elasticsearch系列一:elasticsearch(ES简介、安装&配置、集成Ikanalyzer)

一、ES简介 1.ES是什么? Elasticsearch 是一个开源的搜索引擎,建立在全文搜索引擎库 Apache Lucene 基础之上。 使用 Java 编写,内部使用 Lucene 做索引与搜索。通过提供一套简单一致的 RESTful API,隐藏 了Lucene 的复杂性,使全文检索变得简单。 Elasticsearch 不仅仅只是一个全文搜索引擎。 它可以被下面这样准确的形容: (1)一个分布式的实时文档存储,每个字段可以被索引与搜索——用作数据库。 (2)一个分布式实时分析搜索..

WorldMvp的专栏 1104

elasticsearch简介 搜索引擎全文搜索引擎

搜索引擎 为什么不用MySQL 我们开发的大部分企业级应用,其本质就是对数据的增删改查的包装,我们一般是分析业务的需求再在代码里面去写查询语句,这个语句一般就写死了,比如说你一个图书管理系统要查询已经有的书籍要查询一本书,这个功能已经写死了,比如说你搜索 “C++程序语言设计" 然后能得到一些数据,但是你颠倒顺序搜索"程序语言设计C++" MySQL的模糊查询就匹配不到数据了,用户还会玩出跟多花式的查询。另外模糊查询"like"是一个扫描全表的操作,如果是你的数据少还好,如果是你有千万数据,那MySQL的耗

半亩方糖 1360
上一篇: Nodejs使用tedious驱动模块连接SqlServer
下一篇: Elasticsearch.Net使用(二)【MVC4 图书管理系统】
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值