ElasticSearch 简介
1. ElasticSearch 简称 ES
2. ElasticSearch 是基于 Lucene 的开源、分布式、RESTful 接口全文搜索引擎
3. ElasticSearch 是一个分布式文档数据库
4. ElasticSearch 支持高可用和可扩展
ElasticSearch 优点
1. 横向可扩展性
1. 只需增长服务器,作一些配置文件修改,启动就能够并入集群
2. 分片机制提供更好的分布性
1. 同一个索引文件分红多个分片(sharding),这点相似于 HDFS 的块机制,分而治之的方式能够提升处理效率
2. 注意:集群建立后,主分片的数量是不可以改变的,索引数据的存储依赖于主分片数量进行逻辑处理的
3. 高可用
1. 提供复制(relpica)机制,一个分片能够设置多个复制,使得某台服务器宕机,集群可使用,
并把宕机数据恢复到其余可用节点
2. 使用简单 : 只需一条命令就能够下载文件,而后很快就能够搭建一个站内搜索引擎
ElasticSearch 应用场景
1. 大型日志收集(ELK)
2. 电商商品搜索或者网盘搜索引擎
ElasticSearch 存储结构
1. 面向文档型数据库,一条数据就是一个文档,以 JSON 格式进行存储
{
"username" : "张三",
"age" : 12,
"sex" : 0
}
2. 与关系型数据库的对比
关系型数据库 : 数据库(database) ---> 表(table) ------> 行(row) -----> 列(Columns)
ElasticSearch : 索引(index) ----> 类型(type) ----> 文档(document) ----> 字段(fields)
Linux(CentOS7) 安装 ElasticSearch
1. 安装 jdk 以及配置环境变量
export JAVA_HOME=/usr/local/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
2. 下载elasticsearch安装包
官方文档https://www.elastic.co/downloads/elasticsearch
注意:linux安装内存建议1g内存以上
3. 上传elasticsearch安装包,解压elasticsearch
1. tar -zxvf elasticsearch-6.4.3.tar.gz
4. 修改配置文件 :
1. network.host: 192.168.212.151 es所在服务id
2. http.port: 9200 es 供外部访问IP
5. 启动elasticsearch
1. 常见错误分析
can not run elasticsearch as root
解决方案:
由于安全问题elasticsearch 不让用root用户直接运行,因此要建立新用户
第一步:liunx建立新用户 adduser XXX 而后给建立的用户加密码 passwd XXX 输入两次密码。
第二步:切换刚才建立的用户 su XXX 而后执行elasticsearch 会显示Permission denied 权限不足。
第三步:给新建的XXX赋权限,chmod 777 * 这个不行,由于这个用户自己就没有权限,确定本身不能给本身付权限。因此要用root用户登陆付权限。
第四步:root给XXX赋权限,chown -R XXX /你的elasticsearch安装目录。
而后执行成功。
建立一个分组 groupadd esmayikt
useradd esyushengjun -g esmayikt -p 123456
chown -R esyushengjun:esmayikt elasticsearch-6.4.3
su esyushengjun 切换用户
继续报错
bootstrap checks failed max virtual memory areas vm.max_map_count [65530] is
vi /etc/sysctl.conf
vm.max_map_count=655360
sysctl –p
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
重启服务器便可
6. 访问elasticsearch,须要关闭防火墙 systemctl stop firewalld
7. 9300与9200区别
9300端口: ES节点之间通信使用
9200端口: ES节点 和 外部 通信使用
Kibana 环境安装
1. 下载到对应的版本进行解压 tar -zxvf kibana-6.4.3-linux-x86_64.tar.gz
2. 修改配置文件 vim config/kibana.yml
server.port: 5601
server.host: "192.168.212.151"
elasticsearch.url: "http:// 192.168.212.151:9200"
3. 启动 ./bin/kibana
4. 访问查看 http://192.168.212.179:5601/app/kibana
Elasticsearch版本控制
1. 为何要进行版本控制 : 为了保证数据在多线程操做下的准确性
2. 悲观锁和乐观锁
1. 悲观锁:假设会发生并发冲突,屏蔽一切可能违反数据准确性的操做
2. 乐观锁:假设不会发生并发冲突,只在提交操做是检查是否违反数据完整性
3. 内部版本控制和外部版本控制
1. 内部版本控制:_version自增加,修改数据后,_version会自动的加1
2. 为了保持_version与外部版本控制的数值一致 使用version_type=external检查数据当前的version值是否小于请求中的version值
PUT /test/user/1?version=2
{
"name":"zhangsan",
"sex":0,
"age":22
}