Elasticsearch入门教程(二):Elasticsearch核心概念
原文:Elasticsearch入门教程(二):Elasticsearch核心概念
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
基本概念介绍
Elasticsearch是一个基于Lucene构建的开源、分布式、RESTful的搜索引擎,能够实现近实时(NRT)搜索,稳定、可靠、安装方便。Elasticsearch 不仅是一种全文索引技术,也是一种面向文档型NOSQL数据库。一个采用Restful API标准的高扩展性和高可用性的实时数据分析的全文搜索工具。
名词解释
- Cluster(集群):一个集群就是由一个或者多个node组成在一起,共同工作,共同分享整个数据具有负载均衡的集群
- Node(节点):单个装有Elasticsearch服务并且提供故障转移和扩展的服务器,有一种节点被称为 “协调节点”
- Index:索引或者称为索引库,Index相当于关系型数据库的Database。
- Type:类型,这是索引下的逻辑划分,一般把有共性的文档放到一个类型里面,相当于关系型数据库的table。
- Document(文档):文档,一个文档是一个可以被索引的基础信息单元, Json结构,这点跟MongoDB差不多。es是分布式的,所以一个文档会被分配到不同的节点上,一个文档究竟被分配到哪个分片上是通过这个公式来计算的 shard = hash(routing) % number_of_primary_shards,其中主分片是在创建索引时设置的,routing是一个变量,一般是文档的id,也可以通过api显示指定,通过控制routing的值来控制将文档分配到指定的分片上来
- Field(字段):Field是Elasticsearch的最小单位,相当于数据的某一类
- Mapping: 映射,用于定义json的结构,类似于关系型数据库中建表时定义的表的结构
- Shards(分片):分片是一个功能完整的搜索引擎,一个分片是一个Lucene的实例。一般是应用程序和索引库进行交互,索引库和分片进行交互,分片分为主分片和副本分片(只是一个主分片的拷贝,副本分片作为硬件故障时保护数据不丢失的冗余备份,并为搜索和返回文档等读操作提供服务),Elasticsearch将索引分成若干份,每个部分就是一个shard,类似于藏宝图,一张藏宝图撕成多片,所有片拼接起来才是完整的一张图。
- Replicas(复制):Replicas是索引一份或者多份的拷贝,为了防止数据的丢失和负载均衡
一个集群包含多个节点
一个节点就是一个es实例
一个实例可以有多个分片
一个分片就是一个lucene实例
// 例如将一篇文档比喻成一张图,将一张图分成4分,允许一份复制,即第三列是第二列的复制
// 假如某个数据丢失了,可以使用复制的图片
关系型数据库和ES的类比:
关系数据库 ⇒ 数据库(Database) ⇒ 表(Table) ⇒ 行(Row) ⇒ 列(Column)
Elasticsearch ⇒ 索引(Index) ⇒ 类型(Type) ⇒ 文档(Document) ⇒ 字段(Field)
ES存储中是按照:索引index->类型type->文档document->字段field 级别层次划分的.
ES集群可以包含多个索引,每个索引可以包含多个类型,每个类型可以包含多个文档,每个文档可以包含多个字段
倒排索引 Inverted index
倒排索引被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储文字的映射
// "我爱中国" 分词如下
token start_offset end_offset type position
我 0 1 CN_CHAR 0
爱 1 2 CN_CHAR 1
中国 2 4 CN_WORD 2
// “中国你好” 分词如下
token start_offset end_offset type position
中国 0 2 CN_WORD 0
你好 2 4 CN_WORD 1
// 分词表
WordID 分词
1 我
2 爱
3 中国
4 你好
// 文档表
DocID content
1 我爱中国
2 中国你好
// 倒排索引表
WordID 分词 文档1 文档2
1 我 √
2 爱 √
3 中国 √ √
4 你好 √
如果查询”中国“就可以知道,中国在文档1和文档2中出现了,直接返回文档1和文档2中的内容
横向:可以知道每个分词都出现在哪些文档中了
纵向:每个文档都有哪些分词
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
我的微信公众号:
Elasticsearch入门教程(二):Elasticsearch核心概念的更多相关文章
- Elasticsearch入门教程(六):Elasticsearch查询(二)
原文:Elasticsearch入门教程(六):Elasticsearch查询(二) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:h ...
- Elasticsearch入门教程(四):Elasticsearch文档CURD
原文:Elasticsearch入门教程(四):Elasticsearch文档CURD 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...
- Elasticsearch入门教程(三):Elasticsearch索引&映射
原文:Elasticsearch入门教程(三):Elasticsearch索引&映射 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文 ...
- Elasticsearch入门教程(一):Elasticsearch及插件安装
原文:Elasticsearch入门教程(一):Elasticsearch及插件安装 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:h ...
- Elasticsearch入门教程(五):Elasticsearch查询(一)
原文:Elasticsearch入门教程(五):Elasticsearch查询(一) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:h ...
- RabbitMQ入门教程(二):简介和基本概念
原文:RabbitMQ入门教程(二):简介和基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...
- JasperReports入门教程(二):中文打印
JasperReports入门教程(二):中文打印 背景 在上一篇中我们介绍了JasperReport的基本入门,也展示了一个报表.但是我们的示例都是使用的英文,如果我们把需要打印的数据改为中文会怎么 ...
- 无废话ExtJs 入门教程二十一[继承:Extend]
无废话ExtJs 入门教程二十一[继承:Extend] extjs技术交流,欢迎加群(201926085) 在开发中,我们在使用视图组件时,经常要设置宽度,高度,标题等属性.而这些属性可以通过“继承” ...
- 无废话ExtJs 入门教程二十[数据交互:AJAX]
无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...
随机推荐
- 使用VSCODE开发UE4
完全可行,速度很快,智能提示.代码格式化.查找Symbol等等都不比VS+Visual AssistX 差. 准备 打开编辑器的Editor Preferences>Source Code,选择 ...
- JIRA7.13版本创建项目:字段和界面(三)
这是我从网上找的资料和最新版的相差不大,可以借鉴原文链接:http://ju.outofmemory.cn/entry/367224 项目的版本号取决于修复版本,不是影响版本 字段 我们已经知道如何在 ...
- 大哥带的JavaScript伪协议
将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的 ...
- 【转】diamond专题(二)– 核心原理介绍
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- leetcode 135分发糖果
这是一道hard题,不好想,但最后还是想出来了,私以为还是根据一些思想方法自己想出来做法印象比较深刻,其次看人家的做法思想自己写代码,其次看代码理解默写,其次直接抄代码: 首先,给每个孩子都发一个糖果 ...
- KNN原理小结
K近邻法(K-nearest neighbors,KNN)既可以分类,也可以回归. KNN做回归和分类的区别在于最后预测时的决策方式.KNN做分类时,一般用多数表决法:KNN做回归时,一般用平均法. ...
- python学习笔记:(十)函数
python中定义函数使用def关键字,一般格式如下: def 函数名(参数列表): 函数体 如: #无参数 def helloworld(): print("Hello World!&qu ...
- sql server 2014安装后用sa登录问题
在使用的sql server的数据的情况下,安装数据过程,未指定使用sa的登录,只能使用windows的账户登录,那要怎么设置账户来使用sa账户登录账号呢? 首先先打开的是sql server man ...
- docker 安装 nexus
docker pull sonatype/nexus3 用docker-compose 部署 创建目录 /usr/local/docker/nexus 在目录下 创建docker-compose.ym ...
- mapreduce的shufflue过程
一.Map阶段: a. 文件切片之后,每一个切片对应一个MapTask b. 在MapTask中,默认按行读取,每读取一行,就调用一次map方法 c. map方法在执行的时候会将结果(这个结果中已经包 ...