天天看点

ElasticSearch、Kibana的下载安装

目录

      • 概述
        • 全文索引
        • ES简介
      • ES的下载、安装、启动
        • 下载
        • win版安装、启动
        • linux版安装
        • linux版启动、停止
      • Kibana的安装、启动
        • ES常见的调试方式
        • Kibana的安装
        • Kibana的启动、停止
        • Kibana的使用
        • 常见问题
          • 再次启动es时抛出异常:某些文件没有权限
          • kibana粘贴代码报错

概述

全文索引

数据可分为2类

  • 结构化数据:格式固定、有长度限制,一般用关系数据库来存储。
  • 非结构化数据:无固定格式、不限制长度,eg. 邮件内容、word⽂档内容。

非结构化数据的2种处理方式

  • 顺序扫描:从前往后依次扫描,eg. 在一篇文章中搜索“java”,会在这篇文章中从前往后扫描,找到“java”出现之处,效率低下。
  • 全文搜索:存储时提取关键字作为索引,根据预先建立的索引来检索,效率高。(全文索引的原理)

全文索引的特点|优点

  • 检索效率高
  • 支持海量数据
  • 检索灵活、自动纠错
  • 索引易维护

全文索引的使用场景

  • 存储、检索海量的非结构化文本数据
  • 需要使用交互式的⽂本查询,用户输入部分关键字,需要提供相应的预选项
  • 需要灵活的文本搜索,用户输入有误时需要自动纠错

全文索引关注的是搜索(读),写的性能相对差一些。

全文搜索引擎的实现方式

  • mysql:支持全文索引,但性能差、支持的数量级低。
  • Lucene:Java编写的一个全文搜索引擎,并非完整的应⽤程序,只是⼀个代码库,强大但使用复杂。Solr、ES都是基于Lucene的,对Lucene进行了封装,简化了操作。
  • Solr:支持分布式,成熟可靠、高容错、可扩展,支持GB级别的数据,常用于企业级应用。
  • ElasticSearch:后起之秀,纯java编写,支持分布式,支持TB、PB级别的数据,提供Restful风格的API,可实现数据的聚合、分析。

ES简介

es的特点

  • 基于Lucene,支持全文索引、结构化检索
  • 纯java编写,支持分布式,高性能、可扩展
  • 可处理PB级别的海量数据
  • 提供Restful风格的API
  • 自动纠错
  • 支持数据的统计、分析,接近实时搜索

es的使用场景

  • 文本内容的全文检索,eg.日志搜索,github、维基百科
  • 数据监控、聚合、分析,eg. 报表统计、分析

ES的下载、安装、启动

下载

官网下载地址:https://www.elastic.co/cn/downloads/elasticsearch

如果觉得下载速度慢,可以使用华为云的镜像:https://mirrors.huaweicloud.com/elasticsearch/

win下载zip,linux下载tar.gz。

ElasticSearch、Kibana的下载安装

es是纯java编写的,需要jdk的支持。es默认自带了一个jdk,在解压目录下的jdk目录下,这个也是es默认使用(需要)的jdk版本。

如果已经配置了jdk的环境变量,会优先使用系统环境变量中配置的jdk。如果系统环境变量中配置的jdk版本与自带的jdk版本(需要的jdk版本)不一致,es启动时会报警告

future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk/jre] does not meet this requirement

es向下兼容jdk8,不影响正常使用。

官方说后续要移除不自带jdk的es,不推荐使用,我们下载带jdk的es即可。自带的jdk版本很新,不稳定,通常在系统环境变量中配置jdk,不使用自带的jdk。

win版安装、启动

1、解压,修改配置文件 conf/elasticsearch.yml

#当前节点名称
node.name: node-1

#集群的初始主节点
cluster.initial_master_nodes: ["node-1"]
           

不配置这2项也可以启动es,但启动kibana时会连接不上es,导致kibana启动失败。

2、双击bin/elasticsearch.bat启动,×掉窗口即停止

打印出 started、访问地址 则说明启动成功,浏览器访问打印的地址(127.0.0.1:9200)可看到es服务器信息。

linux版安装

把安装包放到/usr/local下

1、解压

tar -zxvf elasticsearch-7.6.2-linux-x86_64.tar.gz

mv elasticsearch-7.6.2-linux-x86_64 es

rm elasticsearch-7.6.2-linux-x86_64.tar.gz -I
           

2、修改 config/elasticsearch.yml

#集群名称,默认是elasticsearch,es会自动把同一网段中集群名称相同的节点作为一个集群
# cluster.name: elasticsearch


#当前节点的名称,一般以node-1,node-2,node-x来命名
node.name: node-1

#此节点是否有选举成为master的资格,默认true
#node.master: true

#此节点是否要存储数据,默认true
#node.data: true


#默认绑定127.0.0.1,只允许本地连接,将其设置为0.0.0.0即可允许其它机器连接
network.host: 0.0.0.0

#默认使用9200端口
#http.port: 9200


#集群的初始主节点
cluster.initial_master_nodes: ["node-1"]
           

日志、数据的默认存储位置分别是es主目录的logs、data目录,不用修改。

3、修改config/jvm.options

es处理的数据量级很大,排序、聚合很消耗内存,正式服需要给es设置较大的jvm堆内存。

默认设置的堆内存是1g,官方推荐设置为可用内存的一半,剩下的内存留给Lucene,但尽量不要超过32g,过大的堆内存会降低cpu性能、gc回收垃圾的速度。建议设置为服务器可用内存的1/2或者2/3。

#如果是虚拟机、个人服务器,可以设置小些,eg. 500m
-Xms10g
-Xmx10g
           

如果服务器提供不了设置的内存,会报错

error:

Java HotSpot™ 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f7826330000, 274790678528, 0) failed; error=‘Cannot allocate memory’ (errno=12)

at org.elasticsearch.tools.launchers.JvmErgonomics.flagsFinal(JvmErgonomics.java:126)

at org.elasticsearch.tools.launchers.JvmErgonomics.finalJvmOptions(JvmErgonomics.java:88)

at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:59)

at org.elasticsearch.tools.launchers.JvmOptionsParser.jvmOptions(JvmOptionsParser.java:137)

at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:95)

4、修改文件描述符的最大数量

es很吃资源,要求fd的最大数量至少是65535,而linux一般默认是4096

# 查看fd最大数量限制,如果没有达到65535,则进行修改
ulimit -Hn

vim /etc/security/limits.conf

# 在 #End of file 这一行前面加上2行
# es根据 #End of file 判断文件结尾,配置要放在这行之前
* soft nofile 65536
* hard nofile 65536
           

*表示linux所有的用户,也可以换为要启动es的用户。

5、修改vm.max_map_count

默认为65530,es要求至少为262144

vim /etc/sysctl.conf

#添加一行
vm.max_map_count=262144

#立刻生效
sysctl -p
           

说明:另一种方式 sysctl -w vm.max_map_count=262144 只是临时修改,重启linux就失效。

6、防火墙中开放对应的端口

firewall-cmd --add-port=9200/tcp --zone=public --permanent

firewall-cmd --reload
           

linux版启动、停止

1、es不能用root账户启动。如果没有其它账号,可以添加一个

useradd 用户名
           

2、启动es的账户要有解压目录的rwx权限

#以root(解压目录的属主)身份执行,注意要加 -R 表示递归
chmod 777 -R es
           

3、执行 解压目录下/bin 下的 elasticsearch 即可启动es服务器

#可以加 -d 后台运行
./bin/elasticsearch
           

启动时会生成一些文件,对于新生成的文件没有权限,可以切回root重新授权。

打印出 started 说明启动成功,可查看es服务器信息:

# ip:port , 也可以在浏览器中直接访问该地址
curl 127.0.0.1:9200
           

4、停止

jps 或 ps -ef|grep elasticsearch 找到es进程的pid,kill -9杀掉即可。

ps -ef|grep elasticsearch 会显示一堆信息,杀掉第一个进程即可。

logs下面有es的慢查询日志、gc日志。

Kibana的安装、启动

ES常见的调试方式

  • curl:win、linux命令行通用
curl get http://127.0.0.1:9200

#缺省请求方式时默认get,缺省协议时默认http
curl 127.0.0.1:9200
           
  • Postman
  • Kibana:专业的es调试工具,有代码提示,很方便,推荐

kibana是使用node.js写的,运行kibana会起一个node server,十分占内存。

Kibana的安装

1、下载好放到 /usr/local 下

官网下载地址:https://www.elastic.co/cn/downloads/kibana

如果觉得官网下载速度慢,可以使用华为云的镜像,只是没有最新的版本:https://mirrors.huaweicloud.com/kibana/

win下载zip,linux下载tar.gz,kibana的版本尽量与es版本保持一致,不一致可能出现一些问题。

2、解压、重命名

tar -zxvf kibana-7.8.0-linux-x86_64.tar.gz

mv kibana-7.8.0-linux-x86_64 kibana

rm kibana-7.8.0-linux-x86_64.tar.gz -I
           

3、修改配置文件 config/kibana.yml

#设置kibana绑定的网络地址,默认localhost,只允许本地访问kibana的页面
server.host: "0.0.0.0"

#指定es集群节点,默认为["http://localhost:9200"]
elasticsearch.hosts: ["http://localhost:9200"]

#es的用户名、密码,如果有
#elasticsearch.username: "chy"
#elasticsearch.password: "abcd"
           

如果只连接本地es,则无需修改配置

4、防火墙开放5601端口

firewall-cmd --add-port=5601/tcp --zone=public --permanent

firewall-cmd --reload
           

Kibana的启动、停止

1、和es一样,kibana要以非root账户启动,且该账户要具有kibana目录的rwx权限

#切换到kibana的上级目录,查看是否具有kibana的rwx权限
ls -l | grep kibana

#如果没有,切换到root账户添加权限。注意要加-R表示递归
chmod 777 kibana -R
           

2、执行 bin/kibana 启动kibana

bin/kibana &
           

win版是双击 bin/kibana.bat 启动。

kibana是使用node.js编写的,启动时会启动一个node server,启动慢、占内存。

3、浏览器访问 ip:5601 进入kibana主页

4、kibana的停止

win版×掉kibana的命令行窗口关闭,linux通过kill -9杀掉kibana的进程来关闭

Kibana的使用

Management -> Dev Tool 进入调试页面

ElasticSearch、Kibana的下载安装

url不用写 http://host:port 部分,会自动使用kibana.yml中配置的es集群节点。eg. http://192.168.1.2:9200/mall/_mapping,可以直接写 /mall/_mapping或 mall/_mapping

在Search Profiler中可查看本次操作的耗时、性能分析。

kibana常用快捷键

Ctrl+/  #打开当前相关的api文档

Ctrl+I  #自动缩进

Ctrl+Enter  #执行
           

注释用 # ,单独成行

常见问题

再次启动es时抛出异常:某些文件没有权限

原因:第一次启动es时会生成一些文件,这些新生成的文件没有授权。虽然抛出了异常,但es仍是启动成功的。

解决:切换到root(es目录属主),重新授权

chmod 777 /usr/local/es -R
           
kibana粘贴代码报错

一般是:每行开头有多余的空格,行尾有多余的换行符,将每行行首多余的空格、行尾多余的换行符删掉,Ctrl+I 自动缩进。

继续阅读