一 Elasticsearch介绍
Elaticsearch,简称为es, 是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
概括的讲,ES主要负责了两件事情:分布式搜索引擎和数据分析引擎+海量数据的实时处理。在百度、维基百科、新闻、电商、数据挖掘等多个领域都能见到ES的使用。
Elasticsearch 的特点包括:
- 分布式设计:能够横向扩展,支持大规模集群和数据量。
- 全文搜索:基于反向索引,可以进行快速的全文检索。
- 实时搜索:数据一旦被索引,几乎可以立即搜索到。
- RESTful API:通过 HTTP 接口和 JSON 进行交互,使用简单且与多种编程语言兼容。
- 高可用性:支持自动分片和复制,具备强大的容错性和高可用性。
二 常用术语
Document(文档):Elasticsearch 中的最小数据单元,类似于关系型数据库中的一行数据。每个文档是一个 JSON 对象,存储着结构化或半结构化的数据。
Index(索引):一个索引类似于关系型数据库中的表,包含了一系列具有相同结构的文档。通过索引可以对文档进行快速查询和检索。
Type(类型)(已弃用):Elasticsearch 7.0 之前,一个索引可以包含多种类型的文档,每个文档都有不同的结构。每个文档的类型通过 _type
字段来区分。之后的版本中已逐渐弃用 type
概念,一个索引只能包含一种文档类型。
Field(字段):每个文档由多个字段组成,类似于关系型数据库中的列。字段包含不同的数据类型(如文本、数字、日期、布尔值等)。
Shards(分片):分片 是将一个大索引分割成多个小的子集。Elasticsearch 自动将数据分片,这样可以提高数据的处理能力,并且能够在多个节点上平衡负载。每个索引在创建时会被划分为多个主分片(Primary Shard)。
Replica(副本):副本 是分片的一个拷贝,用于提高查询性能和数据冗余。主分片出现故障时,副本分片可以代替它继续服务,从而保证系统的高可用性。
Cluster(集群):集群 是一组 Elasticsearch 节点组成的系统,每个集群都有一个唯一的名字。集群中的每个节点协同工作,分担数据存储、查询和索引操作。
Node(节点):节点 是集群中的一个单独服务器或实例,每个节点存储索引数据并参与集群的搜索和索引操作。节点之间通过共享数据和任务进行协调。
三 Elasticsearch及中文分词器的下载安装
在官网Download Elasticsearch | Elastic下载我们需要的版本,我这里由于项目需要,下载的是6.4.3版本。
下载好后,应该是一个压缩包,我们把它解压缩到任意目录下,找到config目录下的elasticsearch.yml文件,修改以下配置信息:
接下来,打开GitHub下载中文分词器,注意版本要对应。把下载好的文件夹粘贴到Elasticsearch安装目录的plugins目录下。
我们找到bin目录下的elasticsearch.bat文件,双击启动。
Ps:这时可能会出现双击无法启动的问题,我们用cmd进行启动,查看报错信息如下:
也就是nrecognized VM option 'UseConcMarkSweepGC错误。我们找到config目录下的jvm.options文件,将
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
这几行代码注释掉:
再次启动即可成功启动了。在浏览器中访问127.0.0.1:9200验证是否启动成功。
四 Elasticsearch的使用示例
1.验证启动是否成功
打开一个新的cmd窗口(不要关闭刚才的窗口),输入命令
curl -X GET "localhost:9200/"
2.查看集群状态(使用v显示表头)
>curl -X GET "localhost:9200/_cat/health?v"
基于status来判断集群集群状态 green、yellow、red。green:每个索引的primary shard 和replica shard 都是active 状态的;yellow: 每个索引的primary shard 是active状态的,但部分replica shard不是active状态的。(当只有一个Node, replica shard 没有第二台机器进行分配);red: 不是所有primary shard 都是active状态,说明部分数据丢失了。
3. 使用postman进行使用测试——增
4. 使用postman进行使用测试——查
5. 使用postman进行使用测试——删