全文搜索引擎 Elasticsearch 三板斧(一)部署安装


全文搜索属于最常见的需求,开源的 Elasticsearch是目前全文搜索引擎的首选。

它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。

本文从零开始,讲解如何使用 Elasticsearch 搭建自己的全文搜索引擎。每一步都有详细的说明,大家跟着做就能学会。


一、安装前虚准备的

Elastic 需要 Java 8 环境。如果你的机器还没安装 Java 必须先安装Java环境

sudo apt-get update  
sudo apt-get install openjdk-8-jdk  

安装完成后 还需要配置全局环境变量

  • 可以通过命令查看java的安装位置
$ sudo update-alternatives --config java
  • 复制首选安装的路径,然后打开 /etc/environment
$ sudo nano /etc/environment
  • 在此文件中,添加以下行,确保使用您自己的复制路径替换突出显示的路径。
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"  
  • 保存并退出该文件,然后重新加载它。
$ source /etc/environment
  • 现在可以通过执行以下命令来测试环境变量是否已设置:
$ echo $JAVA_HOME

这将返回您刚刚设置的路径。

Java 安装现在告一个段落;下面进入安装Elasticsearch

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1.zip

$ unzip elasticsearch-5.5.1.zip

$ cd elasticsearch-5.5.1/ 

二、安装Elasticsearch

然后,进入解压后的目录,运行下面的命令,启动Elasticsearch

$ ./bin/elasticsearch

这时候,根据所用的服务器的配置会时常会伴随各种报错,在文章最末尾会将踩过的坑及解决方案列举出来

如果一切正常,Elasticsearch 就会在默认的9200端口运行。这时,打开另一个命令行窗口,请求该端口,会得到说明信息。

curl localhost:9200 # 终端请求  

如果配置了外网访问可直接IP或者域名访问

IP:9200  
alt

上面代码中,请求9200端口,Elasticsearch 返回一个 JSON 对象,包含当前节点、集群、版本等信息。

按下 Ctrl + CElasticsearch 就会停止运行。

三、安装中文分词插件

安装中文分词插件。这里使用的是 ik,也可以考虑其他插件(比如 smartcn)。

$ ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.5.1/elasticsearch-analysis-ik-5.5.1.zip

上面代码安装的是5.5.1版的插件,与 Elastic 5.5.1 配合使用。

接着,重新启动 Elastic,就会自动加载这个新安装的插件。

现在 Elasticsearch 就基本安装完毕了

四、报错解决方案

1.org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

因为Elasticsearch有执行脚本的能力,因安全因素,不能在root用户下运行 解决方案 更改 elasticsearch文件的组 并用非 root 用户执行启动

2.如果这时报错 max virtual memory areas vm.maxmapcount [65530] is too low

切换到root用户修改配置文件

$ vim /etc/sysctl.d/99-sysctl.conf

最下面添加一行

vm.max_map_count=655360  

并执行命令生效:

$ sysctl -p

然后,重新启动elasticsearch,即可启动成功。

3. max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

添加配置

$ vim /etc/sysctl.d/99-sysctl.conf

在后面加上fs.file-max=655350

保存之后sysctl -p使设置生效

添加配置

$ vim /etc/security/limits.conf

在后面添加

* soft nofile 655350

* hard nofile 655350

重新使用SSH登录,再次启动elasticsearch即可

4.外网访问解决方案

$ vim elasticsearch-5.5.1/config/elasticsearch.yml

添加一行

network.host: 0.0.0.0 #允许所有访问 非测试环境自己配置IP  

开启常驻进程 并将进程id返回至文件中

./bin/elasticsearch -d -p pid

杀死Elasticsearch当前进程

kill `cat pid`  

查看 Elasticsearch 是否启动

ps aux|grep elasticsearch  

查看当前java进程

jps  

您的支持是对我最大的鼓励!

发表于: 作者:吕倡
博主经历空降兵部队8年军旅生涯,退伍后到北京IT兄弟连学习软件编程开发,工作不到一年后IT进入兄弟会,一晃在IT行业混迹了5、6年的时间。。。从一名小白也进入到了IT管理者的位置。博客,是博主学习知识分享以及私人笔记(未发布的博客)留存的地方,方便随时观看。
我的站点 Github 新浪微博 Email联系我