中国工程监理人才网/seo关键词优化软件

中国工程监理人才网,seo关键词优化软件,网络优化软件有哪些,学校网站建设协议模板1.什么是ElasticSearch?Elasticsearch是基于Lucene的搜索引擎。它提供了一个分布式,支持多租户的全文搜索引擎,它具有HTTP Web界面和无模式JSON文档。 Elasticsearch是用Java开发的,根据Apache许可条款作为开源发布。----来自维基百科的解释…

1.什么是ElasticSearch?

Elasticsearch是基于Lucene的搜索引擎。它提供了一个分布式,支持多租户的全文搜索引擎,它具有HTTP Web界面和无模式JSON文档。 Elasticsearch是用Java开发的,根据Apache许可条款作为开源发布。

----来自维基百科的解释

我个人的理解是Elasticsearch(以下简称ES)是一个支持分布式的全文搜索引擎,因为在海量数据搜索时,普通关系型、非关系型数据库因为IO读取、处理器运算能力的限制,导致查询效率难以提升,但是ES是分布式的(能把处理压力分摊给每个节点),而且它是给每个词创建索引,所以查询效率极高,堪称即时搜索。

而且ES能搭配Kibana,实现数据的可视化管理与数据分析。

640?wx_fmt=png

                                                                           Kibana仪表盘

2.ES中名词概念

2.1 Node和Cluster

前面所过ES是一个分布式搜索引擎,其本质是一个分布式数据库,可以多台计算机上的ES实例协同工作,这里面的某一台计算机上的某个ES实例,就可以称为一个Node(节点),所有的这些协同工作的实例,可以称为一个Cluster(集群)。

2.2 Index

Elastic 会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。

所以,Elastic 数据管理的顶层单位就叫做 Index(索引)。它是单个数据库的同义词。每个 Index (即数据库)的名字必须是小写。

2.3 Document

Index 里面单条的记录称为 Document(文档)。许多条 Document 构成了一个 Index。

Document 使用 JSON 格式表示,下面是一个例子。

{"user": "张三","title": "工程师","desc": "数据库管理"
}

同一个 Index 里面的 Document,不要求有相同的结构(scheme),但是最好保持相同,这样有利于提高搜索效率。

2.4 Type

Document 可以分组,比如weather这个 Index 里面,可以按城市分组(北京和上海),也可以按气候分组(晴天和雨天)。这种分组就叫做 Type,它是虚拟的逻辑分组,用来过滤 Document。

不同的 Type 应该有相似的结构(schema),举例来说,id字段不能在这个组是字符串,在另一个组是数值。这是与关系型数据库的表的一个区别。性质完全不同的数据(比如productslogs)应该存成两个 Index,而不是一个 Index 里面的两个 Type(虽然可以做到)。

根据规划,Elastic 6.x 版只允许每个 Index 包含一个 Type,7.x 版将会彻底移除 Type。

----参考阮一峰 全文搜索引擎 Elasticsearch 入门教程

3.ES工作原理

Elasticsearch用于构建高可用和可扩展的系统。扩展的方式可以是购买更好的服务器(纵向扩展)或者购买更多的服务器(横向扩展)。

Elasticsearch虽然能从更强大的硬件中获得更好的性能,但是纵向扩展有它的局限性。真正的扩展应该是横向的,它通过增加节点来均摊负载和增加可靠性。如果我们启动一个单独的节点,它还没有数据和索引,这个集群看起来就像下图。

640?wx_fmt=png

集群中一个节点会被选举为主节点(master),它将临时管理集群级别的一些变更,例如新建或删除索引、增加或移除节点等。

主节点不参与文档级别的变更或搜索,这意味着在流量增长的时候,该主节点不会成为集群的瓶颈。任何节点都可以成为主节点。我们例子中的集群只有一个节点,所以它会充当主节点的角色。

当索引创建完成的时候,主分片的数量就固定了,但是复制分片的数量可以随时调整。

让我们在集群中唯一一个空节点上创建一个叫做 blogs 的索引。默认情况下,一个索引被分配5个主分片,但是为了演示的目的,我们只分配3个主分片和一个复制分片(每个主分片都有一个复制分片):

PUT /blogs

{

"settings" : {

"number_of_shards" : 3,

"number_of_replicas" : 1

}

}

640?wx_fmt=png

我们的集群现在看起来就像上图,三个主分片都被分配到 Node 1 。

在单一节点上运行意味着有单点故障的风险:没有数据备份。幸运的是,要防止单点故障,我们唯一需要做的就是启动另一个节点。

如果我们启动了第二个节点,这个集群看起来就像下图

640?wx_fmt=png

第二个节点已经加入集群,三个复制分片(replica shards)也已经被分配了,分别对应三个主分片,这意味着在丢失任意一个节点的情况下依旧可以保证数据的完整性。

文档的索引将首先被存储在主分片中,然后并发复制到对应的复制节点上。这可以确保我们的数据在主节点和复制节点上都可以被检索。

随着应用需求的增长,我们该如何扩展?如果我们启动第三个节点,我们的集群会自我感知,这时便成为了三节点集群。

分片已经被重新分配以平衡负载:

640?wx_fmt=png


从 Node 1 和 Node 2 来的分片已经被移动到新的 Node 3 上,这样每个节点就有两个分片,以代替之前的三个。这意味着每个节点的硬件资源(CPU、RAM、I/O)被较少的分片共享,这样每个分片就会有更好的表现。

分片本身就是一个完整成熟的搜索引擎,它可以使用单一节点的所有资源。使用这6个分片(3个主分片和三个复制分片)我们可以扩展最多到6个节点,每个节点上有一个分片,这样就可以100%使用这个节点的资源了。

----参考文献Elasticsearch: 权威指南

4.ES的安装与使用

4.1安装

因为每个平台上ES安装方法有所区别,而且网络上有较为详细的安装教程,本文在此不再赘述。原本是想着在我的两台腾讯云Centos服务器上,搭建一个ES集群的,但是因为云服务器内存1G,运行ES时总是报错,大体意思是内存不足,所以我就在自己的PC上,只搭建了一个ES节点,还不算ES集群,不过不影响功能的测试。

Windows环境下ES 6.4 MSI下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.msi

一路默认下一步,安装完成后,在浏览器地址输入http://localhost:9200/,如果您能看到下列结果,说明安装完成。

640?wx_fmt=png

"You Know, for Search"

ES有一套Restful 风格的API系统,通过该API我们与ES进行交互。

4.2数据的提交

利用PostMan向ES POST一条数据如下。

640?wx_fmt=png

http://localhost:9200/index/test1/1 中Index是该数据的Index(上文有介绍Index),test1是该数据的Type,1是该条数据的Id,该ID在通过ID获取数据时需要用到。

4.3数据通过ID获取

在知道数据的Index,Type和ID的情况下,可以通过和上文Post数据的Url一样的格式获取数据,不同之处时,此时的HTTP方法时Get,如下:

640?wx_fmt=png

4.4数据的查询

ES的数据查询语法较为丰富,此处以一个最简单的查询为例,Http方法为POST,请求的Url中同样指定了Index和Type

{
   "query" : { "match" : { "tagline" : "for" }}
}

指的时查询tagline中包含的for的数据,

640?wx_fmt=png

其他更详细的查询语法,建议大家查看Elasticsearch: 权威指南,此处主要抛砖引玉。

5.Net Core中使用ES

在上文中,我们了解到,可以通过restful api与ES进行交互,那么,如果需要在我们的程序中使用ES,是不是要创建一个这样的Helper方法,通过HTTP调用RESTFul API与ES进行交互呢?

不是不可以,但是Elastic为大部分语言都创建了"Clients”,其实就是把上文提及的那些方法进行了一个封装,是我们在代码中,能够方便地调用ES。

以.Net Core为例,该”Clients”开源在Github:

https://github.com/elastic/elasticsearch-net

5.1 SDK(客户端,Clients)

在该仓库中,其实有Elasticsearch.Net 和 NEST两个.Net官方SDK,两个各有特色。

Elasticsearch.Net 是一个非常low leave而且灵活的SDK,它不在意你如何的构建自己的请求和响应。它非常抽象,因此所有的Elasticsearch RESTFul API被表示为方法,而且不会影响你构建json / request / response对象的方式。 它还内置可配置/可覆盖的群集故障转移重试机制。

NEST 是一个 high level SDK, 有非常大的弹性,如果你想更好的提升你的搜索服务,你完全可以使用它来做为你的客户端。可以映射所有请求和响应对象,拥有一个强类型DSL(领域特定语言),并且可以使用.net的特性,如协变、Auto Mapping Of POCOs,NEST内部使用的依然是Elasticsearch.Net客户端。

5.2创建一个Demo

本Demo我使用的NEST,所以第一步是创建一个Asp.Net Core Api应用程序并引入NEST的Nuget包。

PM> Install-Package NEST 

然后我创建一个EsClientProvider,代码如下:

640?wx_fmt=png

EsClientProvider代码如下:

    public interface IEsClientProvider{ElasticClient GetClient();}

 

然后再Startup的ConfigureServices进行服务的注册

640?wx_fmt=png

最后,修改ValueContoller,代码如下:

640?wx_fmt=png

其中Index方法能进行数据的提交,Search是通过Post实体的type来进行数据查询。

 

代码不复杂,我就不详细介绍了,在PostMan中进行Search方法的测试,效果如下:

640?wx_fmt=png

查询要求是type是567,响应的实体中,type确实为567,Success!

 

项目完整代码:https://github.com/liuzhenyulive/Elasticsearch.Net-Demo

相关文章:

  • 使用ElasticSearch,Kibana,ASP.NET Core和Docker可视化数据

  • 配置高性能ElasticSearch集群的9个小贴士

  • 使用Elasticsearch 与 NEST 库 构建 .NET 企业级搜索

  • asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程

原文地址:https://www.cnblogs.com/CoderAyu/p/9601991.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《.NET 性能优化》送书活动结果公布

截止到9月7日18:00(规则本是12:00,忙的忘记了这事,18点截的图),本次送书活动《.NET 性能优化》共收到100多位同学参与回复,本次很多同学在看到活动的书 ,自行就到异步社区…

hdu-2844 Coins (混合背包+二进制优化)

HDU链接 文章目录题目描述:题意:题解(代码)题目描述: 输入描述: 输出描述: For each test case output the answer on a single line. 输入 3 10 1 2 4 2 1 1 2 5 1 4 2 1 0 0输出 8 4题意: 有n种硬币&…

.NET Core WebApi中实现多态数据绑定

什么是多态数据绑定?我们都知道在ASP.NET Core WebApi中数据绑定机制(Data Binding)负责绑定请求参数, 通常情况下大部分的数据绑定都能在默认的数据绑定器(Binder)中正常的进行,但是也会出现少…

hdu 1059 Dividing

Hdu链接 文章目录题目描述题意:题解:代码:题目描述 输入描述: 输出描述: 示例1 输入 1 0 1 2 0 0 1 0 0 0 1 1 0 0 0 0 0 0输出 Collection #1: Cant be divided.Collection #2: Can be divided.题意: 有价值分别是1~6的6种…

.Net Core应用框架Util介绍(二)

Util的开源地址https://github.com/dotnetcore/utilUtil的开源协议Util以MIT协议开源,这是目前最宽松的开源协议,你不仅可以用于商业项目,还能把Util的代码放进你的框架,放心使用。Util的命名Util这个名字看上去不怎么高大上&…

.Net架构篇:实用中小型公司支付中心设计

前言说起支付平台,支付宝量级的支付平台和一个小型公司的支付不可同日耳语。一个初创或刚创业一两年的公司,一没人力,二没财力的情况下,如果也想对接支付那怎么办呢?感谢支付宝和微信支付,两大行业巨头提供…

netcore编程之后面对不习惯的xshell黑屏部署,是时候使用jenkins自动化发布工具了...

在很久之前net还只能在windows上部署的时候,或许很多创业公司的朋友发布项目还都是人肉部署,反正windows都是可视化的界面,拖拖拉拉,开开关关还不是特别麻烦。。。现如今你的项目需要在linux上部署,可惜的是再也没有什…

【招聘(重庆)】新空间(重庆)科技有限公司招聘.NET Core

全新平台公司,技术氛围好,未来上升空间巨大!平台架构师薪资范围:15K至40K岗位职责:1、负责公司业务以及相关平台的架构设计、技术选型、研发工作, 参与产品架构的规划与设计;2、遵循总体的架构规划与规范设计项目的应用…

[XSY3320] string (AC自动机,哈希,点分治)

XSY3320 前置芝士:回文前缀&&borderborderborder 推荐博客 推荐博客 考虑点分治,问题变成求经过重心的回文路径个数。 一条经过重心的回文路径长这样: xxx到zzz的串与yyy到rootrootroot的串相同。 建出根到每个节点对应的串的AC自…

如何在 ASP.Net Core 中使用 Consul 来存储配置

原文: USING CONSUL FOR STORING THE CONFIGURATION IN ASP.NET CORE作者: Nathanael[译者注:因急于分享给大家,所以本文翻译的很仓促,有些不准确的地方还望谅解]来自 Hashicorp 公司的 Consul 是一个用于分布式架构的工具,可以用…

[XSY3381] 踢罐子(几何)

XSY3381 点被选为点对之一的贡献我们单独计算(这部分贡献的总和为4n(n−1)(n−2)4n(n-1)(n-2)4n(n−1)(n−2))。接下来只讨论剩余部分的贡献。 先把任意三个点构成的六种选择方案合并,发现在外接圆周和弦之间的点每个有2的贡献,…

The Bottom of a Graph Poj 2553

牛客网 poj 2553 文章目录Description题意:题解:代码:Description We will use the following (standard) definitions from graph theory. Let V be a nonempty and finite set, its elements being called vertices (or nodes). Let E be …

关于.NET Core是否应该支持WCF Hosting的争论

本文要点本文试图回答“.NET Core 是否应该支持 Windows 通信基础(WCF) Hosting?”的问题;支持者论据:许多工程师喜欢把 WCF 作为一种编程模型,不希望因为迁移到 .NET Core 而产生(机会成本&…

ASP.NET Core 2.0使用Autofac实现IOC依赖注入竟然能如此的优雅简便

初识ASP.NET Core的小伙伴一定会发现,其几乎所有的项目依赖都是通过依赖注入方式进行链式串通的。这是因为其使用了依赖注入 (DI) 的软件设计模式,代码的设计是遵循着“高内聚、低耦合”的原则,使得各个类与类之间的关系依赖于接口&#xff0…

连续段问题小结

一个好用的工具——析合树 oi-wiki 例题 CF526F 题意: 给出一个1~nnn的排列,问有多少个区间的值域是连续的。 题解: 线段树单调栈做法 分治做法 析合树做法 图论做法 CF997E 题意: 给出一个1~nnn的排列,有qqq次…

实战中的asp.net core结合Consul集群Docker实现服务治理

一、前言在写这篇文章之前,我看了很多关于consul的服务治理,但发现基本上都是直接在powershell或者以命令工具的方式在服务器上面直接输入consul agent .... 来搭建启动consul集群,一旦把命令工具关掉,则consul无法再后台启动&…

POJ3177 Redundant Paths

POJ3177 Redundant Paths 文章目录Description题意&#xff1a;题解&#xff1a;代码&#xff1a;Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 21945 Accepted: 9056Description In order to get from one of the F (1 < F < 5,000) grazing fields (…

【最小生成树】路线规划(nowcoder 217603)

路线规划 nowcoder 217603 题目大意 给一个无向连通图&#xff0c;问你在经过的边最少的前提下&#xff0c;从1走过所有点&#xff0c;再走回1的最短距离 样例#1 输入样例#1 5 5 5 4 3 4 3 5 2 3 7 1 2 4 2 4 1输出样例#1 26样例解释#1 最少时间的路径: 1 →2 →…

计算几何学习小记

文章目录前言正题平面运算加减乘积常见问题直线/线段规范交点求垂线/点问题判断点在多边形的内/外求两个圆的交点前言 因为懒得画图理解计算几何所以要来这里鼓励一下自己 以后新学的应该也会写在这里。就当我是水博客 应该都是二维的计算几何&#xff0c;三维的有生之年再学 …

Asp.Net Core SignalR 用泛型Hub优雅的调用前端方法及传参

继续学习最近一直在使用Asp.Net Core SignalR(下面成SignalR Core)为小程序提供websocket支持,前端时间也发了一个学习笔记&#xff0c;在使用过程中稍微看了下它的源码,不得不说微软现在真的强大,很多事情都帮你考虑到了,比如使用Redis,使用Redis后,你的websocket就支持横向扩…