什么是 ElasticSearch
ElasticSearch是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
基础概念
索引:含有相同属性的文档集合
类型:索引可以定义一个或多个类型,文档必须属于一个类型
文档:可以被索引的基础数据单位
分片:每个索引都有多个分片,每个分片都是 Lucene 索引
备份:拷贝一份分片就完成分片的备份
形象比喻:
百货大楼里有各式各样的商品,例如书籍、笔、水果等。书籍可以根据内容划分成不同种类,如科技类、教育类、悬疑推理等。悬疑推理类的小说中比较有名气的有《福尔摩斯探案集》、《白夜行》等。
百货大楼 --> ElasticSearch 数据库
书籍 --> 索引
悬疑推理 --> 类型
白夜行 --> 文档
安装
需要JDK1.8 和 NodeJS 最新版的7 慎重考虑需要需要JDK 11 登陆老版本下载 官网下载文件。
解压到 /use 目录下
因为 Elasticsearch 可以执行脚本文件,为了安全性,默认不允许通过 root 用户启动服务。我们需要新创建用户名和用户组启动服务
代码语言:javascript复制#增加 es 组
groupadd es
#增加 es 用户并附加到 es 组
useradd es -g es -p es
#给目录权限 进入到你解压的位置 输入pwd 将路径拷贝到 es 后面
chown -R es:es /usr/elasticsearch-5.6.1
#使用es用户
su es
默认情况下,Elasticsearch 只允许本机访问,如果需要远程访问,需要修改其配置文件 特别注意 要和上下文对齐 不要多空格 和少空格
代码语言:javascript复制vim config/elasticsearch.yml
# 去掉 network.host 前边的注释,将它的值改成0.0.0.0
network.host: 0.0.0.0
# 在文件末尾添加 2 段配置 这里是为了解决跨域问题 web管理界面
http.cors.enabled: true
http.cors.allow-origin: "*"
启动服务
代码语言:javascript复制bin/elasticsearch 或 bin/elasticsearch -d # -d 表示后台启动
报错解决
先不后台启动 错误会直接打印 调试没有问题之后 后台启动 可能会出现的问题 6也会遇到
代码语言:javascript复制elasticsearch5.0启动失败,出现如下提示:
1、Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
由于elasticsearch5.0默认分配jvm空间大小为2g,修改jvm空间分配
# vim config/jvm.options
-Xms2g
-Xmx2g
修改为 还是同样的错误的话 继续往下调
-Xms512m
-Xmx512m
2、max number of threads [1024] for user [elasticsearch] is too low, increase to at least [2048]
修改 /etc/security/limits.d/90-nproc.conf
* soft nproc 1024
* soft nproc 2048
3、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
修改/etc/sysctl.conf配置文件,
cat /etc/sysctl.conf | grep vm.max_map_count
vm.max_map_count=262144
如果不存在则添加
echo "vm.max_map_count=262144" >>/etc/sysctl.conf
4、max file descriptors [65535] for elasticsearch process likely too low, increase to at least [65536]
ulimit -n 65536
以下是在5.5.1是踩过的坑
5、启动异常:ERROR: bootstrap checks failed
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
问题原因:因为Centos6不支持SecComp,而ES默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。详见 :https://github.com/elastic/elasticsearch/issues/22899
解决方法:在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
6、logstash使用rpm包安装的时候没有配置init的启动脚本
默认情况使用rpm包安装完logstash之后没有启动脚本。官网给了一个脚本,需要根据不同的系统版本生成对应的启动脚本,而且官网没有给明使用方法,对于新用户来说算是个坑,不过在终端可以查看到脚本的使用帮助# /usr/share/logstash/bin/system-install --help
生成启动脚本,centos6使用sysv参数,centos7使用systemd
# /usr/share/logstash/bin/system-install /etc/logstash/startup.options sysv
Successfully created system startup script for Logstash
启动成功 你的ip 9200 默认端口
head插件
查看内容显示效果不友好,因此,我们需要安装一个名为 elasticsearch-head 的插件,让内容显示效果比较舒适。需要安装nodejs githup下载 端口9100
代码语言:javascript复制cd elasticsearch-head-master
npm install
npm run start
后面是我整合啦spring boot