ElasticSearch 简介概念及核心
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 简介概念及核心的更多相关文章
- Elasticsearch基本概念及核心配置文件详解
Elasticsearch5.X,下列的是Elasticsearch2.X系类配置,其实很多配置都是相互兼容的 1. 配置文件 config/elasticsearch.yml 主配置文件 confi ...
- Elasticsearch学习之基本核心概念
在Elasticsearch中有许多术语和概念 1. 核心概念 Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包 ...
- ElasticSearch简介和快速实战
ElasticSearch简介和快速实战 ElasticSearch与Lucene Lucene可以被认为是迄今为止最先进.性能最好的.功能最全的搜索引擎库(框架) 但是想要使用Lucene,必须使用 ...
- elasticsearch简介
elasticsearch 摘要: 1 es是一个分布式全文搜索引擎.特定是:无中心化,实时,扩展性强. 2. es有几个好的概念或者特点:(1)cluster 集群无中心化.(2)shards.分片 ...
- Elasticsearch 简介
1. 背景 Elasticsearch 在公司的使用越来越广,很多同事之前并没有接触过 Elasticsearch,所以,最近在公司准备了一次关于 Elasticsearch 的分享,整理成此文.此文 ...
- 第01章 ElasticSearch简介
本章内容 Apache Lucene是什么. Lucene的整体架构. 文本分析过程是如何实现的. Apache Lucene的查询语言及其使用方法. ElasticSearch的基本概念. ELas ...
- 【ElasticSearch】概念
小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了. 对小史面试情况感兴趣的同学可以观看面试现场系列. 随着央视诗词大会的热播,小史开始对诗词感兴趣 ...
- 1、elasticsearch简介
1.elasticsearch简介 中文帮助文档地址:http://es.xiaoleilu.com/ • Elasticsearch是一个基于Lucene的实时的分布式搜索和分析引擎.设计用于云计算 ...
- Elasticsearch简介与实战
什么是Elasticsearch? Elasticsearch是一个开源的分布式.RESTful 风格的搜索和数据分析引擎,它的底层是开源库Apache Lucene. Lucene 可以说是 ...
随机推荐
- Vagrant 手册之 Vagrantfile - 最低版本
原文地址 可以在 Vagrantfile 中指定一组 Vagrant 的版本,以强制人们使用带有 Vagrantfile 的特定版本的 Vagrant.这可以帮助解决使用带有 Vagrantfile ...
- 16/7/11_PHP-图形图像操作
GD库简介 GD指的是Graphic Device,PHP的GD库是用来处理图形的扩展库,通过GD库提供的一系列API,可以对图像进行处理或者直接生成新的图片. PHP除了能进行文本处理以外,通过GD ...
- Mac版-python环境配置(一):Python下载安装
Mac OS X系统自带python,可以在终端输入python查看版本[输入exit()即可退出],如下: 从上图中可以看到,mac自带python 2.7.10,版本相对较低.现在python已升 ...
- 上海站赛后总结&反思
上海站赛后总结&反思 赛后反思一下,本应该做出3~4题的场,最后只出了2题. 先回顾一下比赛,比赛开始10分钟,队友dy就想出了B题是trie树的模板题,然后让mqy码,第一次交的时候有地方打 ...
- Interface-接口的实现与注意事项
package cn.learn.Interface; public interface MyInterfaceA { public abstract void methodA(); public a ...
- POJ 2528 Mayor's posters(线段树,区间覆盖,单点查询)
Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 45703 Accepted: 13239 ...
- Django学习——开发你的第一个Django应用2
接着上一节的内容来说.我们将继续关注与上一节制作的polls应用以及Django自动产生额度管理网站. 产生一个管理员用户 首先我们需要产生一个管理员用户,运行如下命令: python manage. ...
- java随机数Math.random()
double random=Math.random();//返回[0,1)随机数 (int)(Math.random()*6)//返回0-5:随机数 (int)(Math.random()*6+1)/ ...
- jieba库的使用
jieba库的使用 jeiba库是一款很优秀的用于中文分词的第三方库,它通过一个汉词词典来确定汉字之间的关联概率,将概率较大的组成分词. 精准模式 把文本精准的分割开来,不存在冗余单词. jieba. ...
- gradlew compileDebug --stacktrace -info
gradlew compileDebug --stacktrace -info 在命令行中进入项目的根目录,或者可以在Android studio的Terminal中直接操作也可以,然后敲入一个命令: ...