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. Java中的基本类型和包装类型区别

    首先看一下几个测试题,验证一下java中对基本类型和包装类型的理解,看看最后输出的答案对不对,答案在这篇博客中哦: // 第一题: 基本类型和包装类型 int a = 100; Integer b = ...

  2. JavaScript 高级程序设计(第3版)第二章 (在html中使用js)

    1.script元素的属性(6个):①async(异步脚本),只对外部脚本有效 ②defer(延迟脚本),只对外部脚本有效 ③charset,src(可跨域),type,language 2.尽可能使 ...

  3. HTML5-注册表单案例fieldset

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. [SDOI2019]快速查询

    [SDOI2019]快速查询 [题目链接] 链接 [思路要点] 据说是 \(\text{SDOI2019}\) 最水的题 操作次数为 \(1e7\) 范围,显然要求每次操作 \(\mathcal{O} ...

  5. UML类图及类之间关系

    1.UML基本介绍 UML:统一建模语言,是一种用于软件系统分析和设计的语言工具 2.UML图 UML图分类: 用例图 静态结构图:类图,对象图,包图,组件图,部署图 动态行为图:交互图,状态图,活动 ...

  6. 负载均衡算法WeightedRoundRobin(加权轮询)简介及算法实现

    Nginx的负载均衡默认算法是加权轮询算法,本文简单介绍算法的逻辑,并给出算法的Java实现版本. 本文参考了Nginx的负载均衡 - 加权轮询 (Weighted Round Robin).     ...

  7. MySQL语句优化方法(简单版)

    基础回顾: sql语句是怎么样运行的? 一般来说,客户端发送sql语句到数据库服务器——数据库服务器进行运算并返回结果——客户端显示sql语句运行结果. 在本地运行时以workbench为例,客户端为 ...

  8. linux系统使用和优化的原则

  9. quotastats - 显示与配额子系统相关的统计信息

    SYNOPSIS(总览) quotastats DESCRIPTION(描述) 该命令显示与配额子系统相关的统计信息.

  10. squid代理与缓存(上)

    squid代理与缓存(上) 1. Squid介绍 1.1 缓存服务器介绍 缓存服务器(英文意思cache server),即用来存储(介质为内存及硬盘)用户访问的网页,图片,文件等等信息的专用服务器. ...