ElasticSearch(一)ElasticSearch基础概念一篇过
一、简单介绍
什么是ElasticSearch?
定义:用Java开发并且是当前最流行的开源的企业级搜索引擎。
优势:实时搜索,稳定,可靠,快速,安装使用方便。
应用场景?
概念对标
什么是全文检索
全文检索是指:
- 通过程序扫描文本中的每一个单词,针对单词建立索引,并保存该单词在文本中的位置、以及出现的次数。
- 用户查询时,通过之前建立好的索引来查询,将索引中单词对应的文本位置、出现的次数返回给用户,因为有了具体文本的位置,所以就可以将具体内容读取出来了
倒排索引
直接上图比较~
二、核心名词解释
索引 index
定义:归为一类的文档的集合。
举个🌰:可以有一个客户数据的索引,一个产品目录的索引,还有一个订单数据的索引等等。
映射 mapping
定义:处理数据的方式和规则的一些限制。
举个🌰:比如如某个字段的数据类型、默认值、分词器、是否被索引等等,这些都是映射里面可以设置的。
PS:先有一个印象,后面会去使用的~【有梦想的肥宅】
{
"properties": { //表示设置映射关系【有梦想的肥宅】
"name": {
"type": "keyword", //keyword:关键字,不能分词,必须完全匹配
"index": true //表示此字段可以进行索引查询
},
"sex": {
"type": "text",//text:文本,可以分词
"index": true
},
"phone": {
"type": "text",
"index": false //表示此字段不能进行索引查询,如果查询时带上这个字段会报错【没有被索引,不能被查询】
}
}
}
字段 field
定义:相当于是数据表的字段/列。
字段类型 type
定义:标识字段的类型。
举个🌰:Text、Keyword、Byte等。
文档 document
定义:一个可被索引的基础信息单元,类似关系型数据库里的一条记录。
PS:文档以JSON格式来表示。
集群 cluster
定义:一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能,提高系统可用性。
节点 node
定义:一个节点是集群中的一个服务器,作为集群的一部分,它存储数据,参与集群的索引和搜索功能。
PS:节点创建时默认加入一个叫做elasticsearch的集群。
分片 shards
产生背景:单个节点无法存储巨量数据,且响应时间长。
定义:将索引划分成多份,每一份就叫分片,其本身也是一个功能完善并且独立的索引,可以被放置到集群中的任何节点上。
作用:
- (1)允许水平分割、扩展数据的存储容量,分担请求压力。
- (2)允许在分片之上进行分布式的、并行的操作,进而提高性能和吞吐量。
- (3)用户无感知的情况下扩展了系统性能。
副本 replicas
产生背景:单点故障时需要进行灾备。
定义:分片的一份或多份拷贝,这些拷贝叫做副本分片,或者直接叫副本。
PS:副本与原分片是不能位于同一个节点上的!!!
PS:在索引创建之后,可以在任何时候动态地改变副本的数量,但是不能改变分片的数量。
作用:
- (1)防止单点故障,灾备提高了系统可用性。
- (2)扩展搜索量/吞吐量,因为搜索可以在所有的副本上并行运行。
三、扩展知识
核心端口
- 9200:服务端口,用于远程链接
- 9300:集群间通信端口