这些天接触公司的有些项目,涉及到Elasticsearch,现在也开始学习学习。
一、Elasticsearch的下载与安装
1)下载地址:https://www.elastic.co/downloads/elasticsearch,目前的最新版本为3.2.1
2)解压之后的目录呈现:
bin:包含运行Elasticsearch实例和管理插件的一些脚本。
config:包含elasticsearch.yml + logging.yml这两个配置文件,前者一看就知道是负责设置ES的默认配置,而后者则是定义有多少信息写入系统日志、定义日志文件、定期创建新文件等信息。(后续再详细介绍着两个文件的配置信息)
lid:包含一些相关的包文件信息。
logs:存放日志文件的目录。
modules:模块,包含lang-expression、lang-groovy、reindex。
plugins:存放一些提供数据展示的插件信息
3)启动,进入解压过后elasticsearch的bin目录下,运行./elasticsearch启动,ES会默认启动9200端口。
4)关于端口的问题:
ES有2个端口:9200 / 9300,其中9200为HTTP端口,用于http请求;9300为TCP端口,用于节点之间的交互。
二、相关概念说明
1)Index:索引,通俗的说就相当于数据库,ES可以向索引中写入文档或从索引中读取文档,其内部也是使用 Lucene将数据写入索引中或从索引中检索出来的。不同的是,ES中的索引可能由一个或多个lucene
索引构成。
2)document:文档,即每一条JSON格式的数据。
3)marpping: 映射,说白了,就是你根据自己的业务需求来规范你的文档使用怎样的存储结构何一些其他特
殊的配置,如词条怎么分割、reindex等等。
4)type: 类型,每一个文档都有一种对应的类型,每一种文档类型也都有对应的映射。
5)node: 节点,每一个节点为一个ES实例。
6)cluster: 集群,可以有一个或多个具有相同cluster.name的节点,其中cluster.name在elasticsearch.yml 文件中配置。
7)Shards: 分片,ES在创建索引时会将数据散布到多个lucene索引上,每一个lucenes索引也就是一个
shards。分片的数量是在索引创建时就已经配置好了的,之后是不能改变的,后面的内容会说 到这个问题。
8)Replicas: 副本,索引的冗余备份 。当主分片挂掉之后,会从副分片中选举出一个有资格的主分片继续进
行管理。与主分片不同的是,副本分片可以随时进行增加、删除。
9)Recovery:当集群中的节点有变化时(新增、删除、故障、重启),ES会根据机器的负载对分片进行重新
分配。
10)gateway: 网关,ES在执行的时候,集群状态 + 索引的各种设置信息都会在网关中被持久化。
三、集群和节点之间的关系
一个集群可以由一个或多个节点组成,相互合作,以此来均摊负载(负载均衡),每个节点之间可以相互转发请求到相应的节点上。
当用户访问其中一个节点时,此节点被当成主节点,用来收集各个节点返回的据,再传递给客户端。
其中一个集群只有一个主节点,它可以临时管理集群级别的一些变更:索引(CURD)、节点(CURD)。
四、ElaticSearch与传统关系型数据库的对比
Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices -> Types -> Documents -> Fields
--------------------------------------------------------------------------------------------------
Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每 一个类型包含多个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。
五、「索引」含义的区分(索引(index)这个词在Elasticsearch中有着不同的含义)
1)索引(名词)
如上文所述,一个索引(index)就像是传统关系数据库中的数据库,它是相关文档存储的地方,index的复数是indices 或indexes。
2)索引(动词)
「索引一个文档」表示把一个文档存储到索引(名词)里,以便它可以被检索或者查询。这很像SQL中的INSERT关键字,差别是,如果文档已经存在,新的文档将覆盖旧的文档。
3)倒排索引
在传统数据库为特定列增加一个索引,例如B-Tree索引来加速检索。Elasticsearch和Lucene使用一种叫做倒排索引(inverted index)的数据结构来达到相同目的。
六、数据 + 分片 + 集群 + 节点 + 应用程序 + 索引之间的关系梳理
1)首先,【数据】被【索引】到分片中,索引中的每一个文档都属于一个单独的【主分片】(复制分片为主分片的副本),当索引创建完成,则主分片的数量就固定了。所以主分片的容量决定了索引最多能存储多少数据。
分片的最大容量完全取决于你的使用状况:硬件存储的大小、文档的大小和复杂度、如何索引和查询你的文档,以及你期望的响应时间。
2)接着,分片会平均分配到【集群】的不同【节点】上,当集群容量变化时,ES会自动对分片进行平衡迁移。
3)【应用程序】----通信--->【索引】 ----通信--->【分片】。
七、故障检测
是在集群中的每一个管理节点向其他数据节点发送ping请求,若没有正常响应则表示出现了故障,将此节点移除。
更多资料参考:
elasticsearch的自动发现节点机制及原理:https://www.zhihu.com/question/29360024/answer/55368070
elasticsearch配置详解:http://rockelixir.iteye.com/blog/1883373
相关推荐
在第一章"初识Elasticsearch"中,我们将了解到Elasticsearch的基本概念,包括它的分布式特性、RESTful API以及数据模型。这部分内容会讲解如何安装和启动Elasticsearch服务器,以及如何通过简单的命令进行索引创建、...
1. ELASTICSEARCH 初识 Elasticsearch(简称ES)是一款基于Lucene的开源分布式搜索引擎,以其强大的全文检索、实时分析和高可扩展性而闻名。它不仅用于传统的搜索功能,还广泛应用于日志分析、监控、物联网(IoT)...
### Elasticsearch 初识与简单案例 #### 一、Elasticsearch简介 Elasticsearch 是一款基于 Lucene 的分布式全文搜索引擎,具有高度可扩展性及灵活性。它不仅支持文本搜索,还能进行复杂的数据分析任务,因此在众多...
《Elasticsearch 核心技术与实战》第一部分:初识 Elasticsearch第 1 章:概述课程介绍课程综述及学习建议Elasticsearch 简介及其发展历史Elastic Stack 家族成员及其应用场景第 2 章:安装上手Elasticsearch 的安装...
Elasticsearch(简称ES)是一款基于Lucene的开源搜索引擎。它为开发者提供了高效、可靠的搜索和数据分析能力,支持多种数据类型的实时索引与搜索。 **1.2 入门指南** - **1.2.1 初识ES** - Elasticsearch是一个...
无论你是初识Elasticsearch,还是希望深入理解和提升技能,本书都能提供宝贵的资源。书中从基础概念到高级实践,层层递进,帮助读者逐步掌握Elastic Stack的各个方面。通过实际案例的学习,读者可以将理论知识转化为...
《 Elasticsearch核心技术与实战》 Github地址极客时间:《 Elasticsearch核心技术与实战》视频课程购买地址-https: 第一部分:初识Elasticsearch第1章:概述课程介绍课程概要及学习建议Elasticsearch简介及其发展...
3. Elasticsearch的入门初识:Elasticsearch可以运行在单机上,也可以扩展到成千上万的服务器中。它支持PB级别的数据处理,适合各种规模的企业和项目使用,包括但不限于大型企业。 4. Elasticsearch的分布式特性:...
本知识篇主要涵盖了Elasticsearch(简称ES)的核心概念和技术,包括分布式文档系统、搜索引擎原理、Java API的使用、索引管理和内核优化等方面,旨在帮助读者深入理解并掌握ES在实际应用中的关键技能。 **1. 分布式...
“mans_to_es”这个名字暗示了这个库可能与数据迁移或数据同步有关,尤其是与MongoDB(Mans)到Elasticsearch(Es)之间的数据操作。MongoDB是一种流行的文档型数据库,而Elasticsearch则是一个强大的分布式搜索引擎...
1. 初识编程环境:Casio FX-82ES计算器内置了简单编程功能,其编程环境通常包含一个编辑器和一个执行环境。用户可以通过内置的函数、命令和编程结构来编写程序。 2. 程序编辑与存储:用户可以在计算器上通过按键...
3.1.2 初识opengl es 2.0应用程序 80 3.2 着色器与渲染管线 89 3.2.1 opengl es 1.x的渲染管线 89 3.2.2 opengl es 2.0的渲染管线 94 3.2.3 opengl es中立体物体的构建 97 3.3 主流android手机gpu大...
JavaScript,是一种广泛应用于网页和网络应用的编程语言,尤其在前端开发中占据核心地位。它是一种轻量级、解释型的脚本语言,允许实时修改网页内容,为用户提供动态交互体验。JavaScript语法与C++和Java类似,但...
在“初识Avalon”这个主题中,我们将深入探讨Avalon的基本概念、核心特性以及如何通过提供的示例文件开始你的Avalon之旅。 1. **基本概念** - **MVVM模式**:Avalon遵循Model-View-ViewModel的设计模式,使得数据...
### JavaScript 初识及基本语法详解 #### 一、JavaScript 概述 JavaScript 是一种广泛应用于 Web 开发的脚本语言,它具有基于对象和事件驱动的特点,主要用于增强网页的动态性和交互性。该语言由 Netscape 公司的 ...
2. **初识执行计划** 在KingbaseES中,执行计划通常以图形或文本形式呈现,显示了查询中每个操作的顺序以及它们之间的关系。这些操作包括扫描(Scans)、连接(Joins)、排序(Sorts)和聚合(Aggregates)等。 3....
第1章 Lucene初识 Lucene4入门精通实战课程概述 Lucene系统架构 第2章 Lucene索引 Lucene索引里有什么 Lucene索引深入 Lucene索引深入优化 Lucene索引搜索 第3章 Lucene搜索实战 Lucene搜索实战 Lucene搜索深入...
GET /test_index/test_type/_search?q=test_field:test 或 GET /test_index/test_type/_search?q=+test_field:test ---------------------------------结果--------------------------------- { took: 2, timed_...
〖课程介绍〗: 互联网架构师5.0(106.98G) 〖课程目录〗: 八、Jquery ---1.jQuery基础.mp4 ---2.jQuery基本操作.mp4 ...二十九、CC服务-分布式存储引擎Elasticsearch ---176.基本操作.mp4 ---177.高级查询.mp4 ---178.集
+ 轴的公差:Ts=│dmax-dmin│ =│es-ei│ * 极限尺寸和公差的关系: + 极限尺寸是尺寸的两个界限值,公差是允许尺寸的变动量。 学习目标: * 理解孔和轴的概念。 * 掌握公称尺寸、实际尺寸、极限尺寸的概念及其...