ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 一、来源 ElasticSearch是一个基于 Lucene 的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。ElasticSearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便,其中维基百科、Stack Overflow、Github 的搜索都是基于 ElasticSearch 构建的; > 简单来说,它的功能就是聚合数据,提供搜索; ## 二、价值 用数据库,也可以实现搜索的功能,为什么还需要搜索引擎呢? 这是因为,数据库检索的模糊查询,无法进行分词等,性能上也是个瓶颈,因此,对于复杂的查询,不能很好的解决,这里,就是搜索引擎的用武之地了; ## 三、核心概念 ### **Node 与 Cluster** Elastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例; 每个 Elastic 实例称为一个节点(node),一组节点构成一个集群(cluster); ### **Index** Elastic 会索引所有字段,经过处理后写入一个反向索引(Inverted Index),查找数据的时候,直接查找该索引; 所以,Elastic 数据管理的顶层单位就叫做 Index(索引),它是单个数据库的同义词,每个 Index (即数据库)的名字必须是小写; >[danger] 简单的,可以把index理解为数据库中的表; ### **Document** Index 里面单条的记录称为 Document(文档),许多条 Document 构成了一个 Index,Document 使用 JSON 格式表示,同一个 Index 里面的 Document,不要求有相同的结构(scheme),但是最好保持相同,这样有利于提高搜索效率;下面是一个例子; ``` { "id": "1", "name": "ray", "desc": "rayEs" } ``` >[danger] > 1、简单的,可以把Document理解为数据库中的表的一条记录; > 2、ES要求每个文档有唯一ID,用户可自行指定(推荐),若未指定,ES自动生成唯一文档ID; 文档元数据 | 节点 | 说明 | | --- | --- | | `_index` | 文档存储的地方 | | `_type` | 文档代表的对象的类 | | `_id` | 文档的唯一标识,你可以自定义`_id`,也可以让Elasticsearch帮你自动生成 | ### **Field** Document中的字段,是文档中的某一个属性; >[danger] 简单的,可以把Document理解为数据库中的表的一条记录的一个字段; ## **ID主键** ES中的每个Document都有一个唯一的ID; ### **mapping** mapping是类似于数据库中的表结构定义,主要作用如下: * 定义index下的字段名; * 定义字段类型,比如数值型、浮点型、布尔型等; * 定义倒排索引相关的设置,比如是否索引、记录position等; * 设置分词器等; 与表结构不同的是,关系数据库的表的结构必须事先通过create table语句来明确,而映射既可以显示的通过命令来事先定义,也可以在存储文档(插入数据)时由ES来自动识别; ### **shards** 代表索引分片,ES可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改; ## 四、快速安装 ### **下载** ``` wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.1-linux-x86_64.tar.gz ``` ### **解压** ``` tar -zxvf elasticsearch-7.15.1-linux-x86_64.tar.gz mv elasticsearch-7.15.1 elasticsearch cd elasticsearch ``` ![](https://img.kancloud.cn/d6/e8/d6e864749c180c0e7d210f1af6b722d5_1422x249.png) ### **创建es专属用户** 创建es用户: ``` useradd es passwd es ``` 例如密码设置为`!@#qweASD` 更改es文件夹及内部文件的所属用户及组为es:es(在elasticsearch根目录执行此命令); 进入elasticsearch上级目录; ``` cd .. chown -R es:es elasticsearch ``` 切换到es用户再启动: ``` su es ``` ## 五、快速运行 进入主目录; ``` cd elasticsearch ./bin/elasticsearch -d ``` ![](https://img.kancloud.cn/89/3f/893f1d07046f4a8892facc872bfc9aaa_1441x912.png) ![](https://img.kancloud.cn/68/51/685106b5df738121f26d81420ff22826_1441x912.png) 访问地址: ``` http://127.0.0.1:9200 ``` ![](https://img.kancloud.cn/18/fc/18fcb4f45d45e9720543c42dcae90c0f_1428x395.png) 进程名称: 停止,采用杀进程的方式; ``` ps -ef|grep elastic ```