本文主要介绍elasticsearch6.0的一些基本概念,有助于深入理解、研究elasticsearch和elk系统

一图胜千言

elasticsearch与mysql参照来看

添加一条数据

紫色箭头所指向的nginx为index名称 红色箭头所指向的logs为type名称
-d 参数后面的整个json串为document(一条数据) 黄色箭头所指向的http_version(json串的key部分)为字段名称 蓝色箭头所指向的HTTP/1.1(json串的value部分)为字段值

Cluster

顾名思义,cluster(集群)由一台及以上主机节点组成并提供存储及搜索服务,为方便理解可以将其看作为mysql集群;
elasticsearch集群名称在配置文件ES_HOME/config/elasticsearch.yml中定义,集群名称默认为elasticsearch,可通过cluster.name: my-application属性定义;
单台节点在集群中的名字可通过node.name: node-1属性定义,默认为自动生成的一个uuid值;

Node

node为集群中的单台节点,其可以为master节点亦可为slave节点(节点属性由集群内部选举得出)并提供存储相关数据的功能,为方便理解可以将其看作mysql集群中的某一台主机;
可以通过下述配置设置master节点只提供搜索服务不提供存储服务从而提高该节点的搜索处理效率;

node.master: false
node.data: false

Index

index直译为索引,主要用于存储具体数据,为方便理解可以将其看作mysql数据中的一个库;比如可以定义一个索引名称为nginx-2018-01-11用于存储2018-01-11当天所有的nginx访问日志;

注意:索引名称必须为小写

Type

简单的说可以将type看作mysql数据库中的一张表;

注意:从6.0版本开始type默认只能为log,后续版本中将不再使用type这个概念;

Document

document是可以被索引的最小单元,可以将其看作为mysql中某张表的一条数据;其包含多个字段,比如用户表中可以包含用户名、密码、邮箱等;
在elasticsearch中,存储document数据需使用json格式数据与服务端交互;

Shards

shards(切片)这个概念也比较容易理解,说白了就是把一个大文件分割成多个小文件然后分散存储在集群中的多个节点上;可以将其看作mysql的分库分表概念;这样做的好处是将压力分散到多台机器上,比如你有一张1T的表,要执行一条查询语句,传统方式会只在某一台节点上执行查询语句其所能用到的资源也就是这台节点的最高配置;现在的情况是(假如有5台节点)将1T的表拆分为5分分别存储在5台节点上,查询的时候5台节点都会执行查询操作,然后将5台节点的查询结果汇总在一起返回给用户,这样所能用的资源就是整个集群的资源,处理效率自然也会快很多(不要担心集群汇总查询结果的耗时太大);
默认情况下elasticsearch会将用户的index拆分为5个shard,可以在创建索引的时候通过number_of_shards参数制定shard的数量;
总体来说,shard的数量与集群中的data节点数量成正比但不宜超过data节点数量;

注意: 索引一旦创建,shard值不可改变,但replicas的值可以改变;

Replicas

replicas(副本)简单的理解就是某个文件的拷贝,两个文件一模一样,查询的时候两个都能看,误删除其中一个的时候另一个还在;本质是保证数据不丢失,在elasticsearch中replicas的另一个作用就是提高查询效率;
replica是相对与shard而言的,一般成对使用,比如你有一个索引,shard设置为5,replica设置为1,那么总的切片数为shard(5) + shard(5) * replicas(1) = total(10);如果有5台data节点,每台节点上都会存储两个不相同的shard,这样某台data节点坏掉集群能从其它节点上保存了整个index的5个shard,所以不影响正常使用;一旦有新的节点加入,集群可以从其它节点将shard再次存储在该节点,从而保证集群高可用性;
replica可在index创建后更改,其值越大搜索效率越高,但写入性能越低(一条数据写入操作需要做(1+replicas)遍),具体值与集群data节点数量相关,不宜超过【data节点数-1】

参考文档

elasticsearch概念介绍: https://www.elastic.co/guide/...

轻松搞懂elasticsearch概念的更多相关文章

  1. 轻松搞懂Java中的自旋锁

    前言 在之前的文章<一文彻底搞懂面试中常问的各种“锁”>中介绍了Java中的各种“锁”,可能对于不是很了解这些概念的同学来说会觉得有点绕,所以我决定拆分出来,逐步详细的介绍一下这些锁的来龙 ...

  2. 一文搞懂 Elasticsearch 之 Mapping

    这篇文章主要介绍 Mapping.Dynamic Mapping 以及 ElasticSearch 是如何自动判断字段的类型,同时介绍 Mapping 的相关参数设置. 首先来看下什么是 Mappin ...

  3. 彻底搞懂 Elasticsearch Java API

    说明 在明确了ES的基本概念和使用方法后,我们来学习如何使用ES的Java API. 本文假设你已经对ES的基本概念已经有了一个比较全面的认识. 客户端 你可以用Java客户端做很多事情: 执行标准的 ...

  4. 轻松搞懂Python递归函数的原理与应用

    递归: 在函数的定义中,函数内部的语句调用函数本身. 1.递归的原理 学习任何计算机语言过程中,“递归”一直是所有人心中的疼.不知你是否听过这个冷笑话:“一个面包,走着走着饿了,于是就把自己吃了”. ...

  5. 轻松搞懂WebService工作原理

    用更简单的方式给大家谈谈WebService,让你更快更容易理解,希望对初学者有所帮助. WebService是基于网络的.分布式的模块化组件. 我们直接来看WebService的一个简易工作流程: ...

  6. (转载)准确率(accuracy),精确率(Precision),召回率(Recall)和综合评价指标(F1-Measure )-绝对让你完全搞懂这些概念

    自然语言处理(ML),机器学习(NLP),信息检索(IR)等领域,评估(evaluation)是一个必要的工作,而其评价指标往往有如下几点:准确率(accuracy),精确率(Precision),召 ...

  7. 【转载】轻松搞懂WebService工作原理

    用更简单的方式给大家谈谈WebService,让你更快更容易理解,希望对初学者有所帮助. WebService是基于网络的.分布式的模块化组件. 我们直接来看WebService的一个简易工作流程: ...

  8. 一文轻松搞懂Vuex

    概念: Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式(官网地址:https://vuex.vuejs.org/zh/).它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状 ...

  9. ES6学习笔记(一):轻松搞懂面向对象编程、类和对象

    目录 面向过程编程P OP(Process oriented programming) 面向对象编程OOP(Object Oriented Programming) 总结 @ 面向过程编程P OP(P ...

随机推荐

  1. Java入门系列 泛型

    前言 <Java编程思想>第四版足足用了75页来讲泛型——厚厚的一沓内容,很容易让人头大——但其实根本不用这么多,只需要一句话:我是一个泛型队列,狗可以站进来,猫也可以站进来,但最好不要既 ...

  2. SQL 编程技巧

    Ø  简介 本文主要介绍编写 SQL 时的一些编程技巧,方便有时候忘了便于查看,主要包含以下内容: 1.   SQL 语句中使用 +=.-=.*=./= 运算符 2.   值为 NULL 的列或局部变 ...

  3. 随机生成10元素数组并找出最大元素(Java)

    package day01; import java.util.Arrays; import java.util.Random; public class MaxOfArray { public st ...

  4. luogu 1550 [Usaco2008 Oct]打井 最小生成树+小技巧

    此题似乎显然最小生成树,小技巧需要注意: 在每个点出井水,需要花费,实际上可以把井水视作所有井下统一的一点,需要走路径到达此点,新图上再最小生成树 将点化作边处理 还有题目写的数据范围一般不可信,开大 ...

  5. Docker 容器CPU设置

    CPU使用率其实就是你运行的程序占用的CPU资源,表示你的机器在某个时间点的运行程序的情况.使用率越高,说明你的机器在这个时间上运行了很多程序,反之较少.CPU使用率的高低与你的CPU强弱有直接关系. ...

  6. Java Web之JSTL标准标签库总结

    [文档整理系列] Java Web之JSTL标准标签库总结

  7. [C++]数值与字符串转换问题

    #include <stdio.h>//sprintf #include <stdlib.h>//atof,atol,strtod,strtol using namespace ...

  8. PHP7语法知识(四):目录文件操作、Cookie与Session、MySQL数据库的使用、Redis数据库、PHP处理XML与JSON

    目录文件操作 一.目录 1.判断文件类型: 2.创建和删除目录: 3.打开读取和关闭目录 4.获得路径中目录部分 5.目录磁盘空间 二.文件操作 1.打开文件: 2.读取文件: 3.获得文件属性: 4 ...

  9. 第27月第24天 git pull fetch

    1. 在进行 pull 操作的同时,其实就是 fetch+merge 的一个过程.我们从 remote 分支中拉取新的更新,然后再合并到本地分支中去. 如果 remote 分支超前于本地分支,并且本地 ...

  10. Spark思维导图之Spark SQL