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
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。