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级别的结构化或非结构化数据。
---------------------

最新文章

  1. MVC4做网站后台:栏目管理2、修改栏目
  2. linux昨天修改的文件
  3. htnl5中设置文本单行显示,超出部分打省略号,鼠标移到文本时alt出全部文本内容
  4. mysql / mysqld_safe / mysqld 常见错误处理
  5. 简单的计算最值的MapReduce程序
  6. 在Openfire中使用自己的数据表之修改配置文件
  7. ruby 字符串学习2
  8. JavaScript实现http地址自动检测并添加URL链接
  9. 十个免费的Web压力测试工具
  10. android default_workspace.xml
  11. windows如何安装scrapy
  12. Wix学习整理(3)——关于Windows Installer和MSI
  13. 利用python3.5 +TK 开发股票自动交易伴侣
  14. webapi中Route标签定义可选参数
  15. js判断各个浏览器
  16. 负载均衡 Lvs DR 模式笔记
  17. js获得时间new Date()整理
  18. 第03周-Java作业评价
  19. NPOI处理Word文本中段落编号
  20. scrapy 中 xpath 用string方法提取带有空格符解决方法

热门文章

  1. CentOS修改网络设置,不容易啊,终于可以在virtualbox里上网了
  2. 001---mysql分库分表
  3. SQL常用语句之数据库中表的创建、删除以及属性的修改-篇幅3
  4. python学习第十八天计算机字符编码
  5. 最小生成树,Prim算法实现
  6. 监控软件之open-falcon
  7. Springboot2.x整合SpringSecurity
  8. elasticsearch 深入 —— Search After实时滚动查询
  9. Oracle 数据库恢复命令
  10. 工欲善其事,必先利其器——React Native的 IDE