启动kibana可能会慢一些,点一个enter,尝试一下html
逻辑设计包括:文档,类型,索引python
物理设计包括:节点和分片mysql
一个索引类型中,包含多个文档,好比文档1,文档2,...sql
当咱们索引一篇文章时,能够经过下面的顺序找到(索引>类型>文档ID),经过这个组合咱们就能索引到某个具体的文档.数据库
注意,ID没必要是整数,其实是字符串服务器
elasticsearch是面向文档的,那么就意味着索引和搜索数据的最小单位是文档elasticsearch
类型是文档的逻辑容器,就像关系型数据库同样,表格是行的容器spa
索引是映射类型的容器,elasticsearch中的索引是一个很是大的文档集合.设计
一个集群包含至少一个节点,而一个节点就是一个elasticsearch进程,节点内能够有多个索引.3d
若是建立一个索引,那么这个索引将会有5个分片(primary shard,又称主分片)构成,而每一个分片又有一个副本(replica shard,又称复制分片),这样,就有了10个分片.
那么这个全部是如何存储在集群中的呢?
上图是有3个节点的集群能够看到主分片和对应的复制分片都不会再同一个节点内,这样有利于某个节点挂掉了,数据也不至于丢失.
实际上,一个分片是一个lucene索引,一个包含倒排索引的结构使得elasticsearch在不扫描所有文档的状况下,就能钙素你哪些文档包含特定的关键字.
P表明分片,R表明复制分片.
elasticsearch的数据组织
mysql es
数据库 索引
表 类型
行 文档
字段 字段
关系型数据库中 能够有多个表
es中也说5版本前一个索引能够有多个类型,缘由es根据luence来的,因此可能存在问题.
1个数据库只能有一张表,咱们将他们分开才行.
elasticsearch将每一个索引划分为多个分片,每一个分片又能够在集群中的不一样服务器见迁移.
elastic 使用的是一种倒排索引的结果,采用luence的倒排索引做为底层,这种结构适合快速的全文搜索,一个索引由文档中全部不重复的列表构成,对于每个词,都有一个包含它的文档列表.
例如,如今有两个文档,每一个文档包含以下内容
Study every day, good good up to forever # 文档1包含的内容
To forever, study every day, good good up # 文档2包含的内容
为了建立倒排索引,咱们首先要将每一个文档拆分红独立的词(或称为词条或者tokens),而后建立一个包含全部不重复的词条的排序列表,而后列出每一个词条出如今哪一个文档:
两个文档都匹配,可是第一个文档比第二个匹配程度更高。若是没有别的条件,如今,这两个包含关键字的文档都将返回。
再来看一个示例,好比咱们经过博客标签来搜索博客文章。那么倒排索引列表就是这样的一个结构:
若是要搜索含有python
标签的文章,那相对于查找全部原始数据而言,查找倒排索引后的数据将会快的多。只须要查看标签这一栏,而后获取相关的文章ID便可。
不重复且惟一的词条
在elasticsearch中,索引
这个词被频繁使用,这就是术语的使用。
而且elasticsearch将索引被分为多个分片,每份分片是一个Lucene的索引。因此一个elasticsearch索引是由多个Lucene索引组成的。别问为何,谁让elasticsearch使用Lucene做为底层呢!
如无特指,提及索引都是指elasticsearch的索引。
示例1:
s18/doc/1
索引/类型/id
PUT是添加的意思
示例2:
GET指的是查找的意思
示例3:
上边是字符串查询
示例4:查询全部以及删除
示例5:
获得右边的结果:
示例6,看一下主分片:
获得下面的结果:
示例7:
获得下面的结果
别名的优势:用户感觉不到数据的变化,悄悄的在后台作
用别名作查询的优势.
参考blog:NB的开哥