常用术语
- Document 文档数据(可以理解mysql的行)
- Index 索引 (可以理解为mysql中的一个数据库)
- Type索引中的数据类型 (mysql中表的概念)
- Field字段,文档属性 (比如用户的字段,他会有年龄,性别这些等等)
- Query DSL查询语法
- 映射(mapping)
mapping定义了每个字段的类型等信息。相当于关系型数据库中的表结构。
常用数据类型:text、keyword、number、array、range、boolean、date、geo_point、ip、 nested、object
MySQL | ElasticSearch |
---|---|
Database | Index |
Table | Type |
Row | Document |
Column | Field |
Schema | Mapping |
Index | Everything is indexed |
SQL | Query DSL |
select sql | GET http:// |
update sql | PUT http:// |
只要在这个集群里面,新加入的节点能自动被发现
elasticsearch各个节点都是对等关系的,目的就是去中心化.
master节点只是多了一个维护集群状态的功能,master如果出了故障,其他节点能立即顶上去
- Node(节点): 单个的装有Elasticsearch服务并且提供故障转移和扩展的服务器
- Cluster(集群): 一个集群就是由一个或多个node组织在一起的,共同工作,共同分享整个数据具有负载均衡功能的集群
- Document(文档): 一个文档是一个可被索引的基础信息单元
- Index(索引): 索引就是一个拥有几分相似特征的文档的集合
- Type(类型): 一个索引中,你可以定义一种或者多种类型
- Field(列): Field是Elasticsearch的最小单位,相当于数据的某一列
- Shards(分片): Elasticsearch将索引分成若干份,每个部分就是一个shard
- Replicas(复制): Replicas是索引一份或者多份拷贝
基本概念
cluster
代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。
shards
代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
replicas
代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。
recovery
代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。
river
代表es的一个数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法。它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的。
gateway
代表es索引快照的存储方式,es默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。gateway对索引快照进行存储,当这个es集群关闭再重新启动时就会从gateway中读取索引备份数据。es支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。
discovery.zen
代表es的自动发现节点机制,es是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。
Transport
代表es内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)。
倒排索引
然后我们根据这个单词集合和文档集合它们进行运算,就能得到一个矩阵
这个结果其实是个数据结构,
可以用这样的表来表示
上面的第一行(1,)意思是乔布斯这个单词在文档1中出现过,并且在文档1中的3和11位置
第二张表有TF,表示出现的频率,第二张表是额外记录出现的频率
把关键词文档还有出现的位置,一条条记录下来