概述
elaticsearch是一个分布式的搜索引擎,它可以实现各种复杂的数据类型实现近实时的搜索功能,无论是结构化还是非结构化的数据,都能使用elaticsearch存储并且可以快速搜索。elaticsearch广泛应用于网站或者app的搜索功能,以及存储、分析日志、机器学习模型训练,存储分析复杂的数据类型如空间地理信息等。
基本概念
索引 (index)
索引是文档的集合,一个集群中可以有任意多个索引
集群(cluster)
集群中包含多个节点,一个集群由一个唯一的名字标识,默认为“elasticsearch"
文档(document)
-
elaticsearch是面向文档的,文档是所有可搜索数据的最小单位。
-
elaticsearch中存储的文档都是JSON格式,JSON对象由各个字段组成,每个字段都有相应的字段类型,如字符串,数值,布尔,日期等。
-
每个文档都有唯一的id作为区分,可以指定id也可以由elaticsearch自动生成。
JSON对象中的字段可以指定数据类型或者通过elaticsearch自动推算,可以理解为一个文档类似与数据库中的一条记录。
分片 (shard)
在分布式系统中,单机无法存储规模巨大的数据,通常需要靠大规模的集群处理和存储这些数据。一般通过增加机器数量来提高系统水平扩展的能力,因此需要将数据分成若干小块分配到各个机器上。除了将数据分片提高水平扩展能力,分布式系统中还会将数据复制成多个副本,存储在不同的机器上,提高了系统的可用性。ES将数据副本分为主从两部分:主分片(primary shard)和从分片(replica shard)