软件包:
链接: https://pan.baidu.com/s/1O_C0JQGfF8sC_OtcCCLNoQ
提取码: 3iai
1.1. 简介
1.1.1.Elastic
Elastic 官网: https://www.elastic.co/cn/
Elastic 有一条完整的产品线及解决方案: Elasticsearch,Kibana,Logstash 等, 前面说的三个就是大家常说的 ELK 技术栈.
1.1.2.Elasticsearch
Elasticsearch 官网: https://www.elastic.co/cn/products/elasticsearch
如上所述, Elasticsearch 具备以下特点:
分布式, 无需人工搭建集群 (Solr 就需要人为配置, 使用 Zookeeper 作为注册中心)
Restful 风格, 一切 API 都遵循 REST 原则, 容易上手
近实时搜索, 数据更新在 Elasticsearch 中几乎是完全同步的.
1.1.3. 版本
目前 Elasticsearch 最新的版本是 6.3.1, 我们就使用 6.3.0
需要虚拟机 JDK1.8 及以上
1.2. 安装和配置
为了模拟真实场景, 我们将在 Linux 下安装 Elasticsearch.
1.2.1. 新建一个用户 leyou
出于安全考虑, Elasticsearch 默认不允许以 root 账号运行.
创建用户:
useradd leyou
设置密码:
passwd leyou
切换用户:
su - leyou
1.2.2. 上传安装包, 并解压
我们将安装包上传到:/home/leyou 目录
解压缩:
tar -zxvf Elasticsearch-6.2.4.tar.gz
删除压缩包:
rm -rf Elasticsearch-6.2.4.tar.gz
我们把目录重命名:
mv Elasticsearch-6.2.4/ Elasticsearch
进入, 查看目录结构:
1.2.3. 修改配置
我们进入 config 目录: cd config
需要修改的配置文件有两个:
jvm.options
Elasticsearch 基于 Lucene 的, 而 Lucene 底层是 java 实现, 因此我们需要配置 jvm 参数.
编辑 jvm.options:
VIM jvm.options
默认配置如下:
-Xms1g -Xmx1g
内存占用太多了, 我们调小一些:
-Xms512m -Xmx512m
Elasticsearch.YAML
VIM Elasticsearch.YAML
修改数据和日志目录:
- path.data: /home/leyou/Elasticsearch/data # 数据目录位置
- path.logs: /home/leyou/Elasticsearch/logs # 日志目录位置
我们把 data 和 logs 目录修改指向了 Elasticsearch 的安装目录. 但是这两个目录并不存在, 因此我们需要创建出来.
进入 Elasticsearch 的根目录, 然后创建:
- mkdir data
- mkdir logs
修改绑定的 ip:
network.host: 0.0.0.0 # 绑定到 0.0.0.0, 允许任何 ip 来访问
默认只允许本机访问, 修改为 0.0.0.0 后则可以远程访问
目前我们是做的单机安装, 如果要做集群, 只需要在这个配置文件中添加其它节点信息即可.
Elasticsearch.YAML 的其它可配置信息:
属性名 | 说明 |
---|---|
cluster.name | 配置 elasticsearch 的集群名称,默认是 elasticsearch。建议修改成一个有意义的名称。 |
node.name | 节点名,es 会默认随机指定一个名字,建议指定一个有意义的名称,方便管理 |
path.conf | 设置配置文件的存储路径,tar 或 zip 包安装默认在 es 根目录下的 config 文件夹,rpm 安装默认在 / etc/ elasticsearch |
path.data | 设置索引数据的存储路径,默认是 es 根目录下的 data 文件夹,可以设置多个存储路径,用逗号隔开 |
path.logs | 设置日志文件的存储路径,默认是 es 根目录下的 logs 文件夹 |
path.plugins | 设置插件的存放路径,默认是 es 根目录下的 plugins 文件夹 |
bootstrap.memory_lock | 设置为 true 可以锁住 ES 使用的内存,避免内存进行 swap |
network.host | 设置 bind_host 和 publish_host,设置为 0.0.0.0 允许外网访问 |
http.port | 设置对外服务的 http 端口,默认为 9200。 |
transport.tcp.port | 集群结点之间通信端口 |
discovery.zen.ping.timeout | 设置 ES 自动发现节点连接超时的时间,默认为 3 秒,如果网络延迟高可设置大些 |
discovery.zen.minimum_master_nodes | 主结点数量的最少值 , 此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有 3 个符合要求的主结点,那么这里要设置为 2 |
修改文件权限:
leyou 要 own(拥有) Elasticsearch 这个文件夹权限 -R 是递归的赋予权限
chown leyou:leyou Elasticsearch/ -R
1.3. 运行
进入 Elasticsearch/bin 目录, 可以看到下面的执行文件:
然后输入命令:
./Elasticsearch
发现报错了, 启动失败:
1.3.1. 错误 1: 内核过低
我们使用的是 centos6, 其 Linux 内核版本为 2.6. 而 Elasticsearch 的插件要求至少 3.5 以上版本. 不过没关系, 我们禁用这个插件即可.
修改 Elasticsearch.YAML 文件, 在最下面添加如下配置:
Bootstrap.system_call_filter: false
然后重启
1.3.2. 错误 2: 文件权限不足
再次启动, 又出错了:
[1]: max file descriptors [4096] for Elasticsearch process likely too low, increase to at least [65536]
我们用的是 leyou 用户, 而不是 root, 所以文件权限不足.
首先用 root 用户登录.
然后修改配置文件:
VIM /etc/security/limits.conf
添加下面的内容:
- * soft nofile 65536
- * hard nofile 131072
- * soft nproc 4096
- * hard nproc 4096
1.3.3. 错误 3: 线程数不够
刚才报错中, 还有一行:
[1]: max number of threads [1024] for user [leyou] is too low, increase to at least [4096]
这是线程数不够.
继续修改配置:
VIM /etc/security/limits.d/90-nproc.conf
修改下面的内容:
* soft nproc 1024
改为:
* soft nproc 4096
1.3.4. 错误 4: 进程虚拟内存
[3]: max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
vm.max_map_count: 限制一个进程可以拥有的 VMA(虚拟内存区域) 的数量, 继续修改配置文件, :
VIM /etc/sysctl.conf
添加下面内容:
vm.max_map_count=655360
然后执行命令:
sysctl -p
1.3.5. 重启终端窗口
所有错误修改完毕, 一定要重启你的 Xshell 终端, 否则配置无效.
1.3.6. 启动
再次启动, 终于成功了!
可以看到绑定了两个端口:
9300: 集群节点间通讯接口
9200: 客户端访问接口
我们在浏览器中访问: http://192.168.56.101:9200/
1.4. 安装 kibana
1.4.1. 什么是 Kibana?
Kibana 是一个基于 Node.JS 的 Elasticsearch 索引库数据统计工具, 可以利用 Elasticsearch 的聚合功能, 生成各种图表, 如柱形图, 线状图, 饼图等.
而且还提供了操作 Elasticsearch 索引数据的控制台, 并且提供了一定的 API 提示, 非常有利于我们学习 Elasticsearch 的语法.
1.4.2. 安装
因为 Kibana 依赖于 node, 我们的虚拟机没有安装 node, 而 Windows 中安装过. 所以我们选择在 Windows 下使用 kibana.
最新版本与 Elasticsearch 保持一致, 也是 6.3.0
解压到特定目录即可
1.4.3. 配置运行
配置
进入安装目录下的 config 目录, 修改 kibana.YAML 文件:
修改 Elasticsearch 服务器的地址:
Elasticsearch.url: "http://192.168.56.101:9200"
运行
进入安装目录下的 bin 目录:
双击运行:
发现 kibana 的监听端口是 5601
我们访问: http://127.0.0.1:5601/
1.4.4. 控制台
选择左侧的 DevTools 菜单, 即可进入控制台页面:
在页面右侧, 我们就可以输入请求, 访问 Elasticsearch 了.
1.5. 安装 ik 分词器
Lucene 的 IK 分词器早在 2012 年已经没有维护了, 现在我们要使用的是在其基础上维护升级的版本, 并且开发为 Elasticsearch 的集成插件了, 与 Elasticsearch 一起维护升级, 版本也保持一致, 最新版本: 6.3.0
1.5.1. 安装
上传资料中的 zip 包, 解压到 Elasticsearch 目录的 plugins 目录中:
使用 unzip 命令解压:
unzip Elasticsearch-analysis-ik-6.3.0.zip -d ik-analyzer
然后重启 Elasticsearch:
1.5.2. 测试
大家先不管语法, 我们先测试一波.
在 kibana 控制台输入下面的请求:
- POST _analyze
- {
- "analyzer": "ik_max_word",
- "text": "我是中国人"
- }
运行得到结果:
- {
- "tokens": [
- {
- "token": "我",
- "start_offset": 0,
- "end_offset": 1,
- "type": "CN_CHAR",
- "position": 0
- },
- {
- "token": "是",
- "start_offset": 1,
- "end_offset": 2,
- "type": "CN_CHAR",
- "position": 1
- },
- {
- "token": "中国人",
- "start_offset": 2,
- "end_offset": 5,
- "type": "CN_WORD",
- "position": 2
- },
- {
- "token": "中国",
- "start_offset": 2,
- "end_offset": 4,
- "type": "CN_WORD",
- "position": 3
- },
- {
- "token": "国人",
- "start_offset": 3,
- "end_offset": 5,
- "type": "CN_WORD",
- "position": 4
- }
- ]
- }
来源: https://www.cnblogs.com/jimlau/p/12112309.html