前言
什么是ElasticSearch
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
我们建立一个网站或应用程序,并要添加搜索功能,但是想要完成搜索工作的创建是非常困难的。我们希望搜索解决方案要运行速度快,我们希望能有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP来索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一台开始并扩展到数百台,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。因此我们利用Elasticsearch来解决所有这些问题以及可能出现的更多其它问题。
环境说明
vagrant + Ubuntu16.04 + Java_1.8.0_131 + Elasticsearch-6.0
安装Java环境
JAVA_HOMEJava 下载地址:
https://www.java.com/zh_CN/
Java 安装配置请自行搜索
下载后请用以下命令 测试 java是否安装成功
下载 Elasticsearch
官方下载教程
https://www.elastic.co/guide/en/elasticsearch/reference/master/_installation.html
运行 elasticsearch
// 切换目录
cd 【安装目录】/bin/
// 运行文件
./elasticsearch
测试 运行状态
curl http://localhost:9200/?pretty
响应数据
运行过程中出现的问题
1. 内存不足
【提示信息】
INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)【出现原因】
由于elasticsearch5.0默认分配jvm空间大小为2g,修改jvm空间分配【解决方法】
修改配置文件中的默认大小 或者 修改虚拟机的内存
// 切换到配置目录
cd 【安装目录】/config
// 备份配置文件
cp jvm.options jvm.options.back
// 修改配置文件
vi jvm.options
注释掉原来的,加上新的配置
2. 不能以root权限运行Elasticsearch.
【提示信息】
can not run elasticsearch as root【出现原因】
不能以root权限运行Elasticsearch.【解决方案】
- 以非root 用户运行
- 修改配置文件 使其支持root用户
修改bin/elasticsearch,加上ES_JAVA_OPTS属性:
ES_JAVA_OPTS="-Des.insecure.allow.root=true"
保存之后重启Elasticsearch。
- 启动时 加 参数
【安装目录】/bin/elasticsearch -Des.insecure.allow.root=true
3. 没有权限
【错误提示】
Likely root cause: Java.nio.file.AccessDeniedException:
【解决方案】
为安装目录 授权
chmod 777 -R /app/elasticsearch-6.0.0-alpha2/
4.外网不能访问
在vagrant 中映射了端口后 仍然不能访问
【原因】
配置文件中 默认监听的是本地网络 需要修改为全部
【解决方案】
修改配置文件,使其能够监听外部网络请求
// 切换到目录
cd 【安装目录】/config/
// 修改配置文件
vi elasticsearch.yml
修改配置
5.Linux最大线程数限制
【错误提示】
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
【解决方案】
更新最大线程数
// 打开配置文件
vi /etc/sysctl.conf
// 添加下面配置
vm.max_map_count=655360
// 执行更新
sysctl -p
//
重新启动elasticsearch
网友评论