ElasticSearch 的核心概念

Near RealTime(NRT) 近实时

近实时有两种意思,一种是从写入数据到可以被搜索到有一个小延迟(大概一秒),还有一种就是基于ElasticSearch 进行搜索和分析可以达到秒级, 下图来说明一下近实时的效果。

  1. 首先我们先使用Java向ElasticSearch存入一条数据,时间是 ** 2点16分20秒**

  2. 在使用一个Java程序从ElasticSearch里面来读取数据,那么在读取数据的时候这个时间的误差应该保持在秒级,不论是这个集群体系有多大,都应该保持这种速度,比如下面这个例子就是将时间延迟控制在了一秒。

  3. 这里需要提到一下:实时又分为准实时和近实时,准实时是毫秒级,近实时是秒级

Cluster 集群

集群里面包含多个节点,每个属于那个集群都是通过一个配置(集群名称,默认是elasticSearch)来决定的,对于中小型企业来说,刚开始一个集群就一个节点很正常。

Node 节点

集群里面的一个节点,节点也有一个名称,默认是随机分配的,节点名称很重要(在运维管理操作的时候),每个节点默认会去加入一个名叫 elasticsearch 的集群, 如果直接启动一堆节点,那么他们会自动组成一个名为 elasticsearch 的集群, 当然一个节点也可以组成一个 elasticsearch 集群,只不过状态是yellow(警告),正常的状态应该是green(正常),这个在后面会详细说明为什么会有yellow和green之分。

Document 文档

es中最小的数据单元,它可以是一条简单的客户数据,一条商品分类数据,一条订单数据,通常用json结构表示,每个index下的type中,都可以存储多个document。下面就举例一个简单的商品document。

product document
{
"product_name":"田园布艺沙发",
"product_id":"1",
"category_name": "沙发",
"category_id": "2"
}

Type 类型

一个type里面可以有很多个document,就相当于一个表里面有条记录是一个意思,在ElasticSearch6.0版本之前一个索引是可以有多个type的,但是在6.0之后就只能有一个type了。在7.0过后将会完全抛弃type,为什么type会慢慢的被ElasticSearch移除呢?我们都把type比喻成一张表,把index比喻成数据库,但是在数据库里面的表都是相互独立的,各个字段之间互不影响,但是在ElasticSerarch中,多个type里面如果有相同字段,那么多个type就会同用同一个字段,也就是说他们并不会区分开来,所以后期就慢慢的将type潜移默化了。下面的例子将会展示document在type里面是怎么存储的(这里type和document的数据关系,并不是代表es里面数据结构就是这样,这里只是演示,了解就行)。

{
"type":[
{
"product_name":"田园布艺沙发",
"product_id":"1",
"category_name":"布艺沙发",
"category_id":"2"
},
{
"product_name":"田园实木沙发",
"product_id":"2",
"category_name":"实木沙发",
"category_id":"3"
}
]
}

index 索引

在6.0版本之前index里面可以存多个type,但是在6.0之后就只能存一个type了,这个type里面又有很多的document。就像是下面这样(这里只是体现一个index和type还有document的数据关系,并不是代表es里面数据结构就是这样,这里只是演示,了解就行)

{ "index":{ "type":[ { "product_name":"田园布艺沙发", "product_id":"1", "category_name":"布艺沙发", "category_id":"2" }, { "product_name":"田园实木沙发", "product_id":"2", "category_name":"实木沙发", "category_id":"3" } ] } }

shards 分片

ElasticSearch 中特别重要的一个,先简单介绍一下什么是shards,它是一个数据的分片,这里先大概说明一下,下面就来详细解释一下这个shards为什么重要了。

  1. 现在我们有这么一个需求,要求将3T数据存储在ES集群中,但是我们的每个节点最大容量只有1T,这时候单台服务器就容不下我们的数据。

  2. 这个时候我们就需要将这个3T的数据拆分成3份存在3个节点上面(不要说这里有6台服务器,为什么不每台服务器存500G呢,我不接受抬杠

    剖析ElasticSearch核心概念,NRT,索引,分片,副本等的更多相关文章

    1. Elasticsearch入门教程(二):Elasticsearch核心概念

      原文:Elasticsearch入门教程(二):Elasticsearch核心概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:ht ...

    2. ElasticSearch 全文检索— ElasticSearch 核心概念

      ElasticSearch核心概念-Cluster 1)代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的.es的一个概念就是去中心化,字 ...

    3. Elasticsearch核心概念

      Elasticsearch 核心概念 Cluster 代表一个集群, 集群中有多个节点, 其中一个为主节点, 该节点可以通过选举产生.(主从节点只针对于集群内部) 去中心化: 对于集群外来说无中心节点 ...

    4. ElasticSearch 核心概念

      ElasticSearch核心概念-Cluster ElasticSearch核心概念-shards ElasticSearch核心概念-replicas ElasticSearch核心概念-reco ...

    5. ElasticSearch核心概念和文档的CRUD

      目录 1. 基本概念 1.1 Node 与 Cluster 1.2 Index 1.3 Document 1.4 Type(将在ES6.0移除) 2. 数据的增删改查 2.1 添加数据 2.2 查询数 ...

    6. ElasticSearch 基本概念 and 索引操作 and 文档操作 and 批量操作 and 结构化查询 and 过滤查询

      基本概念 索引: 类似于MySQL的表.索引的结构为全文搜索作准备,不存储原始的数据. 索引可以做分布式.每一个索引有一个或者多个分片 shard.每一个分片可以有多个副本 replica. 文档: ...

    7. Elasticsearch学习之基本核心概念

      在Elasticsearch中有许多术语和概念 1. 核心概念 Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包 ...

    8. ElasticSearch(二)核心概念

      elasticsearch核心概念 (1)Near Realtime(NRT):近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概1秒):基于es执行搜索和分析可以达到秒级 (2)Clu ...

    9. elasticsearch基本概念

      NRT(近实时搜索) Elasticsearch是一个NRT平台.这意味着当你索引一个文件时,在细微的延迟(通常1s)之后,该文件才能被搜索到. Cluster(集群) cluster是在所有节点中保 ...

    随机推荐

    1. C++编程题#1:含k个3的数

      描述 输入二个正整数m 和 k,其中1 < m < 100000,1 < k <5 ,判断m 能否被19整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO. 例 ...

    2. iframe嵌套vue页面打开新窗口

      iframe嵌套vue页面时目录结构为下图: 此时出口文件指向index.html, 所以只需要用a标签动态拼接href, 并设置属性 target="_blank" ,即可在if ...

    3. vuex核心

      最详细的Vuex教程 什么是Vuex? vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是dat ...

    4. ubuntu16.04 解决boot空间不足

      1. dpkg --get-selections |grep linux-image #查看已安装内核版本号 2. uname -a #查看现运行版本 3. sudo apt-get purge 版本 ...

    5. 【Coucurrency-CountDownLatch】-20161203-0002

      简介 java异步任务相关的工具.主要用在某些线程需要等到其他线程完成某些操作后才能执行的场景. 等待线程需要显示的调用wait方法,表示线程当前挂起,需要等到countdownLatch到0才执行. ...

    6. KeyguardSliceView.java

      /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Versi ...

    7. python 启动shell报错 Subprocess Startup Error

      如图所示启动python的IDLE以后,按F5启动module或者启动shell的时候就会启动失败提示上面错误,刚开始百度知道解决方案不靠谱,最后找到原因是我之前看小甲鱼的教学视频时,新建了一个pic ...

    8. Vue基础之计算属性

      适用场景 设想一个场景,你需要得到一个复杂运算/逻辑的返回值,利用模板内的表达又过长且难以阅读和维护,这时计算属性就可以很好的解决你的问题.看下面的例子: <!DOCTYPE html> ...

    9. JavaScript新手入门 贪吃蛇

      从小就在玩贪吃蛇,但是知道今天自己做了一遍才知道原理的具体的实现步骤. 刚进入界面时显示开始游戏(不重要,本人比较喜欢吹毛求疵) 中间黑色部分为游戏的主要展示部分 主要步骤及源码: body中代码,红 ...

    10. 15个HTML元素方法!

      首先让我们来讨论一下 HTML 与 DOM 之间的区别. 显然,普通的 <table> 元素就是一段 HTML 代码,它可以应用在任何一个以 .html 为扩展名的文件中.元素自带一系列特 ...