热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ES相关概念理解

Elasticsearch特点:分布式,高性能,高可用,高伸缩的搜索和分析;1)可作为一个大型分

Elasticsearch特点:分布式,高性能,高可用,高伸缩的搜索和分析;

1)可作为一个大型分布式集群,处理PB级别的数据,服务大型公司,亦可运行在少数或单台设备上服务小型公司

分布式的特性:

Elasticsearch致力于隐藏式分布式系统的复杂性,如下这些操作都是在底层自动完成的:

  • 将你的文档分区到不同的容器或者分片(shards)中,他们可以存在于一个或多个节点中
  • 将分片均匀的分配到各个节点,对索引和搜索做负载均衡。
  • 冗余每一个分片,防止硬件故障造成的数据丢失
  • 将集群中任意一个节点上的请求路由到相应数据所在的节点
  • 无论是节点增加或减少,分片都可以做到无缝的扩展和迁移

2)Elasticsearch主要将全文检索、数据分析以及分布式技术,合并在了一起;

3)对用户而言,使用便利

4)相比传统数据库作搜索性能和功能有了很大提升(全文检索,同义词处理,相关度排名,复杂数据分析,对海量数据近实时处理等等);

 

功能:

1)分布式搜索引擎和数据分析引擎;

2)全文检索,结构化检索,数据分析。

3)对海量数据进行近实时的处理

集群内部工作方式

Elasticsearch用于构建高可用和可扩展的系统,扩展的方式可以是购买更高配置的Server(纵向扩展:vertical scale or scaling up)或者购买更多数量的server(横向扩展:horizontal scale or scaling out).

Elasticsearche虽说能从更强大的硬件中获得更好的性能,但是纵向扩展仍存在自身的局限性,真正扩展的往往是横向扩展,通过增加节点来分担负载增加可靠习惯。(对于大多数数据库而言,横向扩展的意味着你的程序讲座非常大的改动才能利用这些添加的设备。ES在这里就显现出优点,因为ES天生就是分布式的:他知道如何管理节点来提高扩展和高可用,这意味着你的程序不需要关心这些。)

全文检索和Lucene

1)全文检索,倒排索引

2)lucene,本来是一个jar包,内部包含了封装好的各种建立倒排索引,以及进行搜索的代码,包括各种算法。在使用Java开发的时候,引入lucene的jar包,然后基于lucene的api进行开发时,lucene会帮助我们在已有的数据中建立索引,帮助我们组织索引结构,此外还可以使用lucene提供的功能和api来针对磁盘上的索引数据,进行搜索。

Elasticsearch的相关名词解释

(1)Near Realtime(NRT):近实时,两层含义:写入数据到数据可以被搜索有一个小延迟,基于ES执行搜索和分析可以达到秒级

(2)Cluster:集群,包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称默认是elasticsearch)来决定的;

(3)Node:节点,集群中的一个节点,介意也有一个名称(默认是随机分配的),节点名称也很重要(在执行运维管理操作的时候),默认节点会加入一个名称为“elasticsearch”的集群,假如启动一堆节点,那么这些节点会自动组成一个elasticsearch集群,当然一个节点也可以组成一个elasticsearch集群。

(4)Document:文档,ES中的最小单位,一个document可以是一条客户数据,一条商品分类信息,一条订单数据等等,通常用JSON形式表示,每个index下的type中都可以存储多个document。

(5)Index:索引,包含一推有下你故事结构的文档数据,如有一个客户索引,商品分类索引,订单索引,索引有一个名称。

(6)type:类型,每个索引里都可以有一个或多个type,type是index中的一个逻辑数据分类,一个type下的document,都有相同的field,如博客系统,有一个索引,可以定义用户数据type,博客数据type,评论数据type。

(7)shard:单个机器无法存储大量的数据,ES可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储,有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能,。每个shard都是一个lucene index。

(8)replicate:任何一个服务器随时可能故障或宕机,primary shard(建立索引是一个设置,不能修改,默认5个),replicate shard(随时修改数量,默认一个),默认每个索引有10个shard,5个primary shard,5个replicate shard,最小的高可用配置,要求2太服务器。

ES与传统数据库相比

Elasticsearch 数据库
Document 行
Type 表
Index 数据库

 

 

 

 

空集群

启动一个单独的节点,他还没有数据和索引,如下图:

一个节点(node)即一个Elasticsearch实例,而一个集群(cluster)由一个或多个节点组成,他们具有相同的cluster name,他们协同工作,分享数据和负载。当加入新的节点或者删除一个节点时,集群就会感知到并平衡数据。

集群中的一个节点会被选举为主节点(master),它将临时管理集群级别的一些变更;如新建成或删除索引、增加或删除节点等。master不参与文档级别的变更或搜索,这意味着在流量增长的时候,master不会成为集群的瓶颈。任何节点都可以成为master。这里的举例因为只启动了一个节点,所以它会充当master的角色。

用户可以与集群中的任何节点通信,包括master,每一个节点都知道文档存在于那个节点上,它们可以转发请求到相应的节点上,我们访问的节点负责收集各节点返回的数据,最后一起返回给客户端。这一切都由elasticsearch处理。

ES集群可以监控统计很多信息,但是只有一个最重要:集群的健康(cluster health)。集群健康有三种状态:green、yellow和red。启动集群,在浏览器中登录127.0.0.1:5601,然后在Dev Tools中可以使用命令来获取集群的健康状态,GET /_cluster/health/

(1)status是我们关注的字段

三种状态的解释:

颜色意义
green 所有主要分片(primary shard)和复制分片(replicate shard)都可用
yellow 所有主要分片可用。但不是所有复制分片都可用
red 不是所有的主要分片都可用

 

 

 

 

 

添加索引

为了将数据添加到ES中,我们需要索引(index)--一个存储关联数据的地方,实际上,索引只是一个用来指向一个或多个分片(shards)的“逻辑命名空间(logical namespace)”.一个分片(shards)是一个最小级别“工作单元(work unit)”,它只是保存了索引中所有数据的一部分。分片其实就是一个Lucene实例,并且它本身就是一个完整的搜索引擎。我们的文档存储在分片中,并且在分片中被索引,但是我们的应用程序不会直接与它们通信,取而代之的是,直接与索引通信。分片是ES在集群中分发数据的关键。把分片想象成数据的容器,文档存储在分片中,然后分片分配到你集群中的节点上。当集群扩缩容时,ES会自动在节点间迁移分片,以使集群保持平衡。

分片可以是主分片(primary shard)或者是复制分片(replicate shard)。你索引中的每个文档属于一个primary shard,所以primary shard的数量决定了索引最多能存储多少数据。

(理论上primary shard能存储的数据大小是没有限制的。限制取决于实际使用情况。shard的最大容量完全取决于你的使用状况:硬件存储大小、文档的大小和复杂度、如何索引和查询你的文档,以及你期望的响应时间)

replicate shard只是primary shard的一个副本,它可以防止硬件故障导致的数据丢失,同时可以提供读请求,比如搜索或者从别的shard取回文档。

当索引创建完成的时候,primary shard的数量就固定了,但是replicate shard的数量可以随时调整。

 

转:https://www.cnblogs.com/zd520pyx1314/p/9396496.html



推荐阅读
  • 【实例简介】本文详细介绍了如何在PHP中实现微信支付的退款功能,并提供了订单创建类的完整代码及调用示例。在配置过程中,需确保正确设置相关参数,特别是证书路径应根据项目实际情况进行调整。为了保证系统的安全性,存放证书的目录需要设置为可读权限。值得注意的是,普通支付操作无需证书,但在执行退款操作时必须提供证书。此外,本文还对常见的错误处理和调试技巧进行了说明,帮助开发者快速定位和解决问题。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 如何在PHP中准确获取服务器IP地址?
    如何在PHP中准确获取服务器IP地址? ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 人人租机作为国内领先的信用免押租赁平台,为企业和个人提供全方位的新租赁服务。通过接入支付宝小程序功能,该平台实现了从零到百的迅猛增长,成为全国首家推出“新租赁小程序”开发服务的阿里巴巴小程序服务商(ISV)。这一创新举措不仅提升了用户体验,还显著增强了平台的市场竞争力。 ... [详细]
  • 深入解析Wget CVE-2016-4971漏洞的利用方法与安全防范措施
    ### 摘要Wget 是一个广泛使用的命令行工具,用于从 Web 服务器下载文件。CVE-2016-4971 漏洞涉及 Wget 在处理特定 HTTP 响应头时的缺陷,可能导致远程代码执行。本文详细分析了该漏洞的成因、利用方法以及相应的安全防范措施,包括更新 Wget 版本、配置防火墙规则和使用安全的 HTTP 头。通过这些措施,可以有效防止潜在的安全威胁。 ... [详细]
  • Django框架进阶教程:掌握Ajax请求的基础知识与应用技巧
    本教程深入探讨了Django框架中Ajax请求的核心概念与实用技巧,帮助开发者掌握异步数据交互的方法,提升Web应用的响应速度和用户体验。通过实例解析,详细介绍了如何在Django项目中高效实现Ajax请求,涵盖从基础配置到复杂场景的应用。 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • Vi编辑器的工作模式有哪些?如何在不同模式间切换?
    Vi编辑器是Linux系统中常用的文本编辑工具,具备三种主要工作模式:命令模式、插入模式和底行模式。用户可以通过特定的按键组合在这些模式之间进行切换,以实现不同的编辑功能。例如,在命令模式下,用户可以执行移动光标、删除文本等操作;而在插入模式下,则可以输入或修改文本内容。底行模式则用于执行保存文件、退出编辑器等命令。 ... [详细]
  • Kafka 是由 Apache 软件基金会开发的高性能分布式消息系统,支持高吞吐量的发布和订阅功能,主要使用 Scala 和 Java 编写。本文将深入解析 Kafka 的安装与配置过程,为程序员提供详尽的操作指南,涵盖从环境准备到集群搭建的每一个关键步骤。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • Syncnavigator激活工具及破解方法详解
    本文详细介绍了Syncnavigator激活工具的使用方法及其破解技巧。用户可以通过访问官方网站www.SyncNavigator.CN获取相关资源,并通过客服QQ 1793040获得技术支持和帮助。此外,文章还提供了详细的步骤说明和常见问题解答,以确保用户能够顺利激活并使用Syncnavigator软件。 ... [详细]
  • 如何正确获取Oracle TNS_ADMIN环境变量的值
    如何正确获取Oracle TNS_ADMIN环境变量的值?TNS_ADMIN 是 Oracle 客户端配置中的一个重要环境变量,用于指定网络配置文件(如 tnsnames.ora)的路径。本文将详细介绍如何在不同操作系统中准确获取该变量的值,并提供实用的命令和步骤,帮助用户确保 Oracle 客户端的网络连接配置正确无误。 ... [详细]
author-avatar
小朋友们还记得我吗对了我就是
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有