1.ES是什么

ES是面向文档的Nosql,这意味着它可以存储整个对象或文档。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在es中,你可以对文档(而非成行成列的数据)进行索引,搜索、排序、过滤。这种理解数据的方式与以往完全不同,这也是es能够执行复杂的全文搜索的原因之一。

ES使用json作为文档序列化格式。

在ES中存储数据的行为叫索引(indexing)

数据存储在索引中(index),索引有多个分片组成
数据有类型(type)一个索引可以有多个类型
数据是文档(document)

一个数据库表(Table)下的数据由多行(ROW)多列(column,属性)组成,等价于1个Type由多个文档(Document)和多Field组成。

对比一下es和传统数据类型:
(DB) database(数据库) -- table(表) -- row(行) -- column(属性)
(ES) index (索引) -- type (类型) -- document(文档) -- filed(字段类型)

索引
user_result

类型
{
"user_result": {
//通过Mapping 映射
"properties": {
"createTime": {
"type": "date"
},
"isDelete": {
"type": "boolean"
},
"name": {
"type": "keyword"
},
"id": {
"type": "keyword"
},
"age": {
"type": "integer"
}
}
}
}
文档
{
"age": 26,
"createTime": 1563713312228,
"id": "123abc6",
"isDelete": false,
"name": "张三"
}

2.ES定义

ES=Elasticsearch是一个开源的分布式全文检索引擎,它可以近乎实时的存储、检索数据;可以扩展到上百台服务器,处理PB级别的数据。 
ES也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单

3.ES核心

3.1 Cluster 集群

ES可以作为一个独立的单个搜索服务器。不过,为了处理大型数据集,实现容错和高可用性,ES可以运行在许多互相合作的服务器上。这些服务器的集合称为集群

3.2 Node 节点

形成集群的每个服务器称为节点

3.3 Shard 分片

1.ES中所有数据均衡的存储在集群中各个节点的分片中,会影响ES的性能、安全和稳定性。

2.简单来讲就是咱们在ES中所有数据的文件块,也是数据的最小单元块,整个ES集群的核心就是对所有分片的分布、索引、          负载、路由等达到惊人的速度

举例:

假设 IndexA 有2个分片,我们向 IndexA 中插入100条数据 (100个文档),
那么这100条数据会尽可能平均的分为50条存储在第一个分片,
剩下的50条会存储在另一个分片中
     3.创建 Index索引时候,在 Mapping 中可以如下设置分片 (curl)

PUT indexName
{
"settings": {
"number_of_shards": 5
}
}
注意:索引建立后,分片个数是不可以更改的

4.分片的个数可根据索引数据量的大小来计算

举例:

如果 IndexA 所有数据文件大小是300G,改怎么定制方案了?
建议:建10个节点 (Node),Mapping 指定分片数为 10,满足每一个节点一个分片,每一个分片数据带下在30G左右。
SN(分片数) = IS(索引大小) / 30
NN(节点数) = SN(分片数) + MNN(主节点数[无数据]) + NNN(负载节点数)
3.4 Replia 副本

为提高查询吞吐量或实现高可用性,可以使用分片副本。 
副本是一个分片的精确复制,每个分片可以有零个或多个副本。ES中可以有许多相同的分片,其中之一被选择更改索引操作,这种特殊的分片称为主分片。 
当主分片丢失时,如:该分片所在的数据不可用时,集群将副本提升为新的主分片。

4.ES的可视化插件

Head 谷歌应用中有

Kibana 数据可视化展

5.ES特点和优势

1.分布式实时文件存储,可将每一个字段存入索引,使其可以被检索到。

2.实时分析的分布式搜索引擎。 
  分布式:索引分拆成多个分片,每个分片可有零个或多个副本。集群中的每个数据节点都可承载一个或多个分片,并且协调和处理各种操作; 
  负载再平衡和路由在大多数情况下自动完成。 
3.可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
---------------------

ElasticSearch 简介概念及核心的更多相关文章

  1. Elasticsearch基本概念及核心配置文件详解

    Elasticsearch5.X,下列的是Elasticsearch2.X系类配置,其实很多配置都是相互兼容的 1. 配置文件 config/elasticsearch.yml 主配置文件 confi ...

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

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

  3. ElasticSearch简介和快速实战

    ElasticSearch简介和快速实战 ElasticSearch与Lucene Lucene可以被认为是迄今为止最先进.性能最好的.功能最全的搜索引擎库(框架) 但是想要使用Lucene,必须使用 ...

  4. elasticsearch简介

    elasticsearch 摘要: 1 es是一个分布式全文搜索引擎.特定是:无中心化,实时,扩展性强. 2. es有几个好的概念或者特点:(1)cluster 集群无中心化.(2)shards.分片 ...

  5. Elasticsearch 简介

    1. 背景 Elasticsearch 在公司的使用越来越广,很多同事之前并没有接触过 Elasticsearch,所以,最近在公司准备了一次关于 Elasticsearch 的分享,整理成此文.此文 ...

  6. 第01章 ElasticSearch简介

    本章内容 Apache Lucene是什么. Lucene的整体架构. 文本分析过程是如何实现的. Apache Lucene的查询语言及其使用方法. ElasticSearch的基本概念. ELas ...

  7. 【ElasticSearch】概念

    小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了. 对小史面试情况感兴趣的同学可以观看面试现场系列. 随着央视诗词大会的热播,小史开始对诗词感兴趣 ...

  8. 1、elasticsearch简介

    1.elasticsearch简介 中文帮助文档地址:http://es.xiaoleilu.com/ • Elasticsearch是一个基于Lucene的实时的分布式搜索和分析引擎.设计用于云计算 ...

  9. Elasticsearch简介与实战

    什么是Elasticsearch?   Elasticsearch是一个开源的分布式.RESTful 风格的搜索和数据分析引擎,它的底层是开源库Apache Lucene.   Lucene 可以说是 ...

随机推荐

  1. Vagrant 手册之多个虚拟机 multi-machine

    原文地址 Vagrant 可以通过一个 Vagrantfile 定义并控制多个客户机.这就是所谓的"multi-machine"多虚拟机环境. 这些机器通常可以协同工作,或者互相关 ...

  2. Altium Designer chapter3总结

    绘制电路原理图中需要注意的如下: (1)元件库的操作:元件库的加载和卸载.查找元件. (2)元件操作: 1.放置元件(元件库中,place part,快捷键)中place part中的history可 ...

  3. 如何创建linux虚拟机

    一.安装配置linux虚拟机 第1步:运行"Vmware WorkStation",看到主页面. 第2步:创建新的虚拟机,新建虚拟机向导——典型(推荐). 第3步:选择稍后安装操作 ...

  4. 转 python 字符串前加r

    在打开文件的时候open(r'c:\....') 加r和不加''r是有区别的 'r'是防止字符转义的 如果路径中出现'\t'的话 不加r的话\t就会被转义 而加了'r'之后'\t'就能保留原有的样子 ...

  5. Map3

    map切片: 切片的数据类型如果是map,则我们称为 slice of map, map切片,这样使用则map个数就可以动态变化了. 案例演示:要求:会用一个map来记录monster的信息 name ...

  6. LeetCode10 Indexed tree

    Binary Indexed Tree(Fenwick tree): 是一个查询和修改复杂度都为log(n)的数据结构.主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值:经过简单修 ...

  7. smarty中判断数组是否为空的方法

    1,用count来取得数组的下标个数 下面例子中,如果$array为空则不输出任何数据 以下为引用的内容:{if $array|@count neq 0 }... ...{/if} 2,直接来判断 以 ...

  8. redis缓存架构-03-redis下的replication以及master+slave

    1.master和slave的读写分离(水平扩容支持读高并发) 2.master主从复制流程 master开始复制给slave前的认证流程 master向slave复制流程 2.1 无磁盘化复制配置 ...

  9. each of which 用法

    each of which 在以下為 同位語,非關代. 1. An urn contains two balls, each of which is known to be either white ...

  10. 构建自己的AngularJS,第一部分:作用域和digest 转摘:http://www.ituring.com.cn/article/39865

    构建自己的AngularJS,第一部分:Scope和Digest 原文链接:http://teropa.info/blog/2013/11/03/make-your-own-angular-part- ...