在开始使用Elasticsearch之前学到的5件事
1. Elasticsearch是一款用于进行全文搜索的软件。
搜索系统将搜索目标的实际数据和它们的”元数据”一同存储。
元数据是为了方便搜索数据实体而添加的属性、关键词、首字母等索引数据。
作为全文检索的方法,有以下几种:
逐一搜索
逐个检查从头到尾的搜索对象,找到相应的部分。Unix中的grep命令等使用此方法进行搜索。
2. 索引式搜索:
提前创建一个索引作为搜索对象,然后根据索引找到相应的位置。
在Elasticsearch(许多搜索软件)中,通过索引式搜索进行全文搜索。
2. Elasticsearch 是一种用于搜索服务器的软件。
一般的的搜索系统通常由以下3个层(层次结构)组成。
查询库层
提供索引器(indexer)和搜索器(searcher)功能。
索引器:从文档中提取关键词,创建索引数据库的角色。
搜索器:提供从索引中进行搜索查询的功能的角色。
代表性的软件是”Apache Lucene”。
※”Apache Lucene” 是一款提供倒排索引搜索功能的软件。
2. 搜索服务器 接口
为了补充搜索库所提供的功能,提供接口和管理功能的层。 代表性的软件有”Apache Solr”和”Elasticsearch”。 ※”Apache Solr”和”Elasticsearch”提供REST API接口,用于补充Lucene的功能。
3. 搜索系统层
提供爬取功能和 Web 用户界面。
它从网页等地方收集最新的文档,常被称为“企业搜索”。
像“namazu”和“Fess”这样的软件是其代表。
Elasticsearch是充当搜索服务器的角色,在内部使用了搜寻库”Apache Lucene”。
※ “Apache Solr”也使用了”Apache Lucene”,基本功能上没有太大差异。
3. Elasticsearch对于前一代的主要发布版具有后向兼容的索引功能。
只有 Elasticsearch 6.x 创建的索引才能使用,限制是只能使用到下一个主要版本。
例如,Elasticsearch 6.x 创建的索引可以在升级到 Elasticsearch 7.x 之后继续使用,但无法在 Elasticsearch 8.x 中使用。
近期 Elasticsearch 的版本升级非常频繁,需要注意。
Elasticsearch通过将数据分散配置到多个节点上实现了提高速度和可用性的目标。
利用Elasticsearch创建的索引会被分割成称为分片的单位并存储。在Elasticsearch 7.x默认情况下,每个索引的分片数量为1,但根据存储数据的节点数量来调整分片数量。通过分散部署在多台节点上,目的是减轻每台节点的资源负载。通常将这个机制称为分片(分区)。
优点1:提升搜索能力
通过增加节点,可以实现搜索的分布式处理,从而提高搜索性能。
在Elasticsearch中,当添加节点时,分片重构将自动执行,因此仅需添加节点即可提升性能的扩展性。
优点2:提高可用性
每个分片都可以拥有一个或多个副本。
因此,即使其中一台节点宕机,也可以通过副本自动恢复数据。
默认情况下,每个分片将生成一个副本。
在Elasticsearch中,可以通过REST API执行所有操作。
尽管我们无法确切地知道是否全部都是如此,但Elasticsearch已经定义了将数据放入或操作存入其中的数据的REST API。
此外,所有作为索引和查询目标的文档在Elasticsearch中都是使用JSON格式表示的。
在Elasticsearch中,一个记录被称为”文档”,只要可以以JSON对象的形式表示,存储该文档就会创建索引并能够快速进行数据检索。
在Elasticsearch出现之前,有一款名为”compass”的软件,其作为Elasticsearch的前身。这背后的原因可能是因为Elasticsearch提供了完整的REST API,并且JSON已经作为RFC4627进行了制定。