前言
本人接触到es一年多了,过程走了很多弯路,希望这篇文章对你们有所帮助。(一下子写不完,本人有时间会持续更新)
一、安装
去官网下载es和kibina
es和kibina下载网址:Download Elasticsearch | Elastic
分词器安装地址:https://github.com/medcl/elasticsearch-analysis-ik
注意:es和kibina的下载版本必须要一直 分词器和es也有版本对应关系,为了节约时间,这里就不详细介绍了。(本人用的es版本是6.7.1)
二、核心概念
1.Near Realtime(NRT)
近实性,这里有两个意思,从写入数据到数据可以被搜索有有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级。
2.Cluster:集群Cluster和node是一对多的关系,一个node必然属于一个集群中
3.node:节点节点有一个名称(默认是随机分配的),默认节点属于一个elasticsearch集群
4.shard:分片一个index的数据分布在多个分片中(也就是说一个index的数据可能存在多台服务器中),有了shard之后可以使索引库可以进行横向的扩展。每个shard是最小的工作单元,增减node时候,shard会自动在node中做负载均衡。
5.replica:副本副本是针对于主分片而言,每个主分片都会有若干个副本,这样主分片所在的node宕机后,副本就会被选举为主分片对外继续提供服务。同一个主分片的副本不可能存在同一台服务器中。
6.index,type,mapping,document,filedindex相当于mysql中的数据库,type相当于mysql中的表,mapping相当于mysql中的字段的映射,document相当于mysql中的行,filed相当于myql中的列
es提供了丰富的数据类型
以下为比较常见的数据类型
注意:es7以上版本取消课type的概念,也就是说一个索引库默认只能存放一种类型的数据了。
- string:字符串类型,分为两种
- text:可分词;
- keyword:不可分词器
- Numerical:数值类型,分为两类
- 基本数据类型:byte,short,integer,long,float,double,haft_float
- 浮点数的高精度类型:scaled_float
- 需要指定一个精度因子,比如10或者100,elasticsearch会把真实值乘以这个因子后存储,取出后再还原
- Date:日期类型
- Object:对象,
- nested:数组类型,可以参与搜索,而且还可以对数组里面的元素做聚合查询
所谓的横向就是elastic可以设置分片的数量,下面以5个分片(primary shard)每个分片1个副本(replica shard)为列(5个primary shard,5个replica shard)
1.每个node拥有的分片数越少,IO/CPU/Memory资源分给每个shard越多,每个shard的性能越好。
2.这里扩容的极限为:集群为10台服务器,每个分片独占一个node,每个分片的性能最佳
3.要想突破极限那就增加集群的数量以及修改每个分片的副本数量
4.5个分片和5个副本最少的集群服务器台数为一台,最多可允许一个服务器宕机,



