Elasticsearch介绍和安装

用户访问我们的首页,一般都会直接搜索来寻找自己想要购买的商品。

而商品的数量非常多,而且分类繁杂。如果能正确的显示出用户想要的商品,并进行合理的过滤,尽快促成交易,是搜索系统要研究的核心。

面对这样复杂的搜索业务和数据量,使用传统数据库搜索就显得力不从心,一般我们都会使用全文检索技术,比如之前大家学习过的Solr。

不过今天,我们要讲的是另一个全文检索技术:Elasticsearch。

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

[外链图片转存失败(img-4ZYscpia-1564303610112)(assets/1528547283102.png)]

需要虚拟机JDK1.8及以上

1.2.安装和配置

为了模拟真实场景,我们将在linux下安装Elasticsearch。

关闭MySQL

service mysql stop
chkconfig mysql off

1.2.1.新建一个用户leyou

出于安全考虑,elasticsearch默认不允许以root账号运行。

创建用户:

useradd leyou

设置密码:

passwd leyou

切换用户:

su - leyou

如果是属于root用户,那就该变权限

id leyou # 查询乐优用户
# 将文件分配给leyou用户,乐优组, -R 递归分配这个文件夹下的所有文件。
chown leyou:leyou elasticsearch-6.2.4/ -R

1.2.2.上传安装包,并解压

我们将安装包上传到:/home/leyou目录

[外链图片转存失败(img-GKj4ZTN6-1564303610113)(assets/1528610258461.png)]

[外链图片转存失败(img-wVObEofr-1564303610113)(assets/1528551162835.png)]

解压缩:

tar -zxvf elasticsearch-6.2.4.tar.gz

我们把目录重命名:

mv elasticsearch-6.2.4/ elasticsearch

[外链图片转存失败(img-cEyYOLeK-1564303610114)(assets/1528610397414.png)]

进入,查看目录结构:

[外链图片转存失败(img-VR5dK6ji-1564303610115)(assets/1528551465373.png)]

1.2.3.修改配置

我们进入config目录:cd config

需要修改的配置文件有两个:

[外链图片转存失败(img-udSGiR8B-1564303610116)(assets/1528551598931.png)]

  1. jvm.options

Elasticsearch基于Lucene的,而Lucene底层是java实现,因此我们需要配置jvm参数。

编辑jvm.options:

vim jvm.options

默认配置如下:

-Xms1g
-Xmx1g

内存占用太多了,我们调小一些:

-Xms512m
-Xmx512m
  1. elasticsearch.yml
vim elasticsearch.yml
  • 修改数据和日志目录:
path.data: /home/leyou/elasticsearch/data # 数据目录位置
path.logs: /home/leyou/elasticsearch/logs # 日志目录位置
  • 修改绑定的ip:
network.host: 0.0.0.0 # 绑定到0.0.0.0,允许任何ip来访问

默认只允许本机访问,修改为0.0.0.0后则可以远程访问

我们把data和logs目录修改指向了elasticsearch的安装目录。但是这两个目录并不存在,因此我们需要创建出来。

进入elasticsearch的根目录,然后创建:

mkdir data
mkdir logs

[外链图片转存失败(img-zkdfRgSh-1564303610117)(assets/1528552839032.png)]

目前我们是做的单机安装,如果要做集群,只需要在这个配置文件中添加其它节点信息即可。

elasticsearch.yml的其它可配置信息:

属性名说明
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

1.3.运行

进入elasticsearch/bin目录,可以看到下面的执行文件:

[外链图片转存失败(img-TQH1uZO1-1564303610118)(assets/1528553103468.png)]

然后输入命令:

./elasticsearch

发现报错了,启动失败:

1.3.1.错误1:内核过低

[外链图片转存失败(img-1BmlsdUx-1564303610118)(assets/1528598315714.png)]

我们使用的是centos6,其linux内核版本为2.6。而Elasticsearch的插件要求至少3.5以上版本。不过没关系,我们禁用这个插件即可。

修改elasticsearch.yml文件,在最下面添加如下配置:

bootstrap.system_call_filter: false

然后重启

 uname -r # 查看内核版本

1.3.2.错误2:文件权限不足

再次启动,又出错了:

[外链图片转存失败(img-VGwyXoPT-1564303610119)(assets/1528599116836.png)]

[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.错误5: jdk版本过低,需要jdk1.8及以上

the minimum required Java version is 8; your Java version from [/usr/local/jdk7/jre] does not meet this requirement
  1. 卸载原来jdk

    rpm -qa | grep java # 查询已经安装的jdk的包
    
    rpm -e --nodeps 安装包 # 卸载这些默认安装的jdk版本。
    

    [外链图片转存失败(img-6skivpp1-1564303610120)(assets/1564292995049.png)]

  2. 查看Linux系统位数,安装相应位数的jdk版本

    getconf LONG_BIT
    
    32 #32位
    64 #64位
    
  3. 上传jdk包

     -xzvf jdk-8u171-linux-x64.tar.gz  # 解压安装包
     
     vim /etc/profile # 配置JavaHOME
     
         export JAVA_HOME=/root/jdk1.8   # 修改成安装目录
         export PATH=$PATH:$JAVA_HOME/bin
     
     source /etc/profile #重新加载配置文件
     
     java -version #重新查看jdk的版本
    

1.3.6.修改jdk配置文件 jvm HotSpot client VM 与 server VM

报错

JVM is using the client VM [Java HotSpot™ Client VM] but should be using a server VM for the best performance

修改文件

jdk1.8\jre\lib\i386\jvm.cfg #jdk的安装目录下的jre

-server KNOWN      # 原来在第二行, 移动到第一个行
-client IF_SERVER_CLASS -server
-minimal KNOWN

1.3.5.重启终端窗口

exit

所有错误修改完毕,一定要重启你的 Xshell终端,否则配置无效。

1.3.6.启动

再次启动,终于成功了!
在这里插入图片描述

可以看到绑定了两个端口:

  • 9300:集群节点间通讯接口
  • 9200:客户端访问接口

我们在浏览器中访问:http://192.168.56.101:9200

[外链图片转存失败(img-iJwpRebZ-1564303610121)(assets/1528611090621.png)]

————end————

喜欢本文的朋友们,欢迎长按下图关注订阅号凌飞心得,收看更多精彩内容

在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值