什么是Elasticsearch?
Elasticsearch是一款分布式实时搜索引擎,内部基于Lucene做索引与搜索。
上面这段简短的介绍有几个关键字值得注意:实时,实时意味着ES的数据在入库后1s内就可以被搜索到。分布式,ES支持动态调整集群规模,弹性扩容。Lucene则是一款全文搜索框架,提供建立索引和执行搜索的功能,但是并不包含分布式服务。目前除了搜索,ES还提供了大量的聚合功能,所以它不仅仅是一款搜索引擎,还可以进行数据分析、统计,生成指标数据,所有这些功能都在快速迭代。
文章目录
1. 基本概念
1.1. ES的索引结构
Elasticsearch是面向文档的,一般使用JSON作为文档的序列化格式,由于文档可以有多个字段,所以在创建索引的时候,我们需要描述文档中的每个字段的数据类型,并且可能需要指定不同的分析器。
在存储结构上,有_index、_type和_id唯一标识一个文档。_index指向一个或多个物理分片的逻辑命名空间,_type用于区分同一个集合逻辑上的不同细分(在7.x版本将完全删除),_id文档标记符由系统自动生成或使用者提供。
1.2. 分片(shard)
分布式系统中为了提高系统水平扩展的能力一般使用分片和多数据副本的方式。分片是将数据分成若干个小块分配到各个机器上;多副本则是复制数据到不同