elastic search 官网
- https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
- http://cwiki.apachecn.org/pages/viewpage.action?pageId=4883367
- 定位: 全文搜索分析引擎
- 快速(近实时)存储,查询,分析大量数据
- 应用场景
- 电商网站将商品等信息保存在es,提供商品查询功能
- 日志数据分析,趋势,指标,统计
- 比价网站数据存储和搜索
- bi,数据分析
- 集群
- 多个节点,保存所有数据和索引,提供查询服务
- 相同集群使用相同的集群名称
- 节点
- 单台机器,集群的一部分
- 数据存储,参与集群索引与查询功能
- 有一个随机的UUID标识,服务启动时分配
- 通过设置集群名称加入特点的集群,默认集群为elasticsearch
- index -- 关系型数据库里的 database
- 定义了文档的逻辑存储和字段类型,每个索引可以包含多个文档类型,文档类型是文档的集合,文档以索引定义的逻辑存储模型,比如,指定分片和副本的数量,配置刷新频率,分配分析器等,存储在索引中的海量文档分布式存储在ElasticSearch集群中。
- type -- database 里的 table
- 索引中的逻辑分区,用来存储不同的类型的文档
- 允许我们在一个 index 里存储多种类型的数据,这样就可以减少 index 的数量了
- 使用 type 的一个好处是,搜索一个 index 下的多个 type,和只搜索一个 type 相比没有额外的开销 —— 需要合并结果的分片数量是一样的。
- 但是,这也是有限制的:
- 不同 type 里的字段需要保持一致。例如,一个 index 下的不同 type 里有两个名字相同的字段,他们的类型(string, date 等等)和配置也必须相同。
- 得分是由 index 内的统计数据来决定的。也就是说,一个 type 中的文档会影响另一个 type 中的文档的得分。
- 同一个 index 的中的 type 都有类似的映射 (mapping) 时,才应该使用 type。否则,使用多个 type 可能比使用多个 index 消耗的资源更多。
- document -- 相当于关系表的数据行
- 存储数据的载体,包含一个或多个存有数据的字段;
- 能够被查询的基本单元
- Shards
- 分片,Index 存储在多个分片中,其中每一个分片都是一个独立的 Lucene Index,均匀分布在集群上
- 功能:
- 水平扩展
- 分布式并行处理
- 每个分片为Luncene index
- 单个分片的最大文档数为2,147,483,519 (= Integer.MAX_VALUE - 128)
- Replicasedit -- 备份,副本
- 高可用,容错,并行处理
- 每个索引可以有多个分片,每个分片可以有多个副本
- 主分片
- 备份分片 -- 复制主分片
- 索引创建后,副本数可以修改,分片数不能修改
- 默认每个index 有5个分片,一个备份,总功10个分片