• Elasticsearch/Kibana安装


    一、ES的安装

    1、源码安装

    0、注意事项

    (1)elasticsearch不能用root用户启动,建议最开始就创建一个普通用户;后续wget安装包、安装/配置jdk等都用这个用户,免得后续因为文件权限、拥有者不匹配引发问题。

    (2)es7之后对jdk版本有一定要求,例如es7要求jdk版本在11以后才行。如果本机jdk版本不满足也没关系,具体操作的时候本机jdk可以默认不动,/etc/profile里面配置es启用安装包的这个jdk就可以了。

    (3)另外值得注意的是最好使用es安装包也有对应的jdk,这个版本是最稳妥的。

    1、创建普通用户

    首先创建一个root以外的普通用户,如下:

    1. #添加一个用户
    2. useradd shuozhuo
    3. #设置密码
    4. passwd shuozhuo
    5. 注:我这里设为为Zs+qq

    之后所有的操作都用这个用户,除非修改/etc/配置。

    2、下载相应安装包

    (1)搜索elasticsearch找到官网   这里

    (2)点击下载→查看历史版本→选择对应的版本→下载→选择linux_64右键赋值链接

    注:我这里下载的是7.14.0版本。

     

     

    3、下载解压

    1. #下载安装包
    2. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.0-linux-x86_64.tar.gz
    3. #解压安装包
    4. tar zxvf elasticsearch-7.14.0-linux-x86_64.tar.gz

    解压后相应文件如下。 

    1. ①bin:启动ES服务脚本的目录
    2. ②config:ES配置文件目录,其中常用的就是 elasticsearch.yml 文件
    3. data: ES的数据存放目录
    4. ④jdk:ES提供的需要指定的jdk目录。注:建议指定ES就用这个jdk。
    5. ⑤lib:ES依赖的第三方库的目录
    6. ⑥logs:ES的日志目录
    7. ⑦modules:ES各模块目录
    8. ⑧plugins:插件目录,ik分词器之类的应该就是安装在这里。

    7.14.0内置的jdk版本为16.0.1,如下:

    4、配置环境变量

    需要把ES中的JDK配置到JAVA_HOME中;同时在对应的/etc/profile中把路径配置给环境变量ES_JAVA_HOME。

    注:ES_JAVA_HOME是ES默认的引用jdk的环境变量,最好配一下。

    1. #注意:我这里的解压包的jdk的路径为 '/home/shuozhuo/elastic/elasticsearch-7.14.0/jdk
'
    2. export JAVA_HOME=/home/shuozhuo/elastic/elasticsearch-7.14.0/jdk

    3. export ES_JAVA_HOME=/home/shuozhuo/elastic/elasticsearch-7.14.0/jdk
    4. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    5. export PATH=$PATH:$JAVA_HOME/bin
    6. #使之生效
    7. source /etc/profile

    或者直接 vim /etc/profile  进行编辑也是可以的。

    5、启动

    1. #跳转到bin目录下
    2. cd bin
    3. #执行启动
    4. ./elasticsearch
    5. #后台启动
    6. ./elasticsearch -d
    7. #关闭
    8. kill -9 pid

    如下:

    没有报错刷出一定量的日志应该就是成功了。ps查看也是有进程的。

    6、验证是否正常启动

    1. #新开一个终端执行
    2. curl 127.0.0.1:9200 或者
    3. curl localhost:9200
    4. curl http://localhost:9200

    出现如下json如下说明es运行是完全正常的。 

    7、开启远程访问

    1. 1、关闭ES
    2. 2、vim elasticsearch.yml将其中的network.host修改为如下
    3. network.host: 0.0.0.0

    注:0.0.0.0表示允许任何位置的任何ip访问。

    之后启动发现出现如下报错。 

    关于这个错误说明一下。一旦开启外部连接模式ES会默认会以集群的方式启动,对于这个问题我们修改使之单节点启动即可。报错提示的就是缺少默认参数,这个三个默认参数的含义如下。

    1. 1 discovery.seed_hosts:  集群主机列表
    2. 2 discovery.seed_providers: 基于配置文件配置集群主机列表
    3. 3 cluster.initial_master_nodes: 启动时初始化的参与选主的node,生产环境必填

    接下来配置单节点模式启动。 

    1. #打开配置文件
    2. vim elasticsearch.yml
    3. #将其中的如下语句
    4. cluster.initial_master_nodes: ["node-1", "node-2"]
    5. 改为
    6. cluster.initial_master_nodes: ["node-1"]

    注:其含义是使用一个节点去初始化集群;其中的node-1是节点名称。当前节点默认就是node-1如下。

    然后重新启动ES就可以了。

    之后在网络配置畅通的情况下在浏览器访问IP:9200应该也是通的,如下就说明ok了。

    8、相关问题与报错

    ①默认启动的ES服务是不允许远程访问的

    ②默认ES监听的web(Restful)端口是9200,TCP端口是9300。启动日志也可以看到相应记录如下:

    ③注意启动ES的时候不能使用root用户,否则会有如下报错。

    ④如果没有权限的话执行会包如下错误

    ⑤另外还会有些内存不足等问题,直接网上搜一般都能搜出原因。

    2、docker安装

    前言:安装包的方式太复杂了,使用docker更简单。

    0、安装docker

    1、获取镜像

    docker pull elasticsearch:7.14.0

    百度“dockerhub” →找到镜像库官网 → 搜索elasticsearch → Tag处搜索目标版本

    2、运行ES

    docker run -d -p 9200:9200 -p 9300:9300 -e "discover.type=single-node" elasticsearch:7.14.0

    ①-p:通过外部的宿主机访问容器

    ②-d:后台运行

    ③9200:9200:宿主机的9200映射到docker的9200;宿主机的9300映射到docker的9300.

    ④-e “discoverXXX”: 以单节点启动

    3、访问ES

    http://ip:9200

    二、Kibana的安装

    1、源码安装

    0、注意事项:

    ① Kibana版本一定要和es版本完全匹配!!!

    ② Kibana的安装要求es服务运行起来!!

    1、ES官网下载对应版本的Kibana   这里

    复制如下链接地址,Linux机器下载。

    1. #下载对应版本
    2. wget https://artifacts.elastic.co/downloads/kibana/kibana-7.14.0-linux-x86_64.tar.gz
    3. #解压缩
    4. tar zxvf kibana-7.14.0-linux-x86_64.tar.gz

    2、编辑配置文件

    编辑kibana配置文件 vim ./kibana/kibana.yml ;按如下方式修改。

    1. #开启kibana远程访问
    2. server.host: "0.0.0.0"
    3. #指定kibana连接本机的es
    4. elasticsearch.hosts: ["http://localhost:9200"]

     

    注:我这里也修改了下默认端口。 

    3、启动kibana

    之后到bin目录下执行  ./kibana 启动kibana;如下应该就可以了。

    注:可以看到其对应的端口是5601. 

    4、验证访问与连接

    如下图说明kibana启动正常

    左侧边栏 Home → Dev Tools →执行默认的语句;如下就是ok的。

    2、docker安装

    类似ES

    三、ES的分词器(安装分词器)

    0、基本概念(Analysis与Analyzer)

    Analysis:文本分析是指吧全文本转换成一系列单词(term/token)的过程,也要分词。

    Analyzer:分词器。Analysis是由Analyzer实现的。分词就是将文档通过Analyzer分成一个个Term(关键词),每个Term都指向包含这个Term的文档。

    分词器(Analyzer)组成:执行也按照如下顺序。不同分词器实现不同,一般②是必须有的。

    ①字符过滤器(character filter):对文本分词之前进行预处理,例如过滤掉html的标签等特殊字符、把&转换成and之类的。
    ②分词器(tokenizers):英文分词就根据空格将单词分开;中文比较复杂,可以采用机器学习算法来分词。
    ③token过滤器(Token filters):将切分的单子进行加工。如大小写转换、去掉停用词(如a、the这种)、加入同义词。 

    1、ES内置分词器及效果测试

    ①Standard Analyzer(标准分词器):英文按单词切分,小写处理、中文单字处理。 为默认分词器。

    ②Simple Analyzer(简单分词器):按照单词切分(符号被过滤),小写处理、中文按空格分词。

    ③Stop Analyzer: 小写处理,停用词过滤。

    ④Whiltespace Analyzer:按照空格切分,不转小写

    ⑤Keyword Analyzer:部分词,直接将输入作为输出。

    分词器测试:

    1. #简单分词器
    2. POST /_analyze
    3. {
    4. "analyzer": "standard",
    5. "text":"I love you, 问世间情为何物"
    6. }
    7. #简单分词器
    8. POST /_analyze
    9. {
    10. "analyzer": "simple",
    11. "text":"I love you, 问世间情为何物"
    12. }
    13. 注:中文就是按照空格分词

    2、创建索引设置分词

    1. #无非就是指定数据类型平齐的位置也指定下分词器就好了
    2. PUT /test
    3. {
    4. "mappings": {
    5. "properties": {
    6. "title":{
    7. "type":"text",
    8. "analyzer": "keyword"
    9. }
    10. }
    11. }
    12. }

    3、中文分词器(IK分词器)安装

    根据前面知道ES内置的分词器都是不适应于中文的;为此需要专门应用中文分词器。

    常用的中文分词器有 smartCN、IK等,这里推荐使用最常见的IK分词器(Lucene时期就存在、对中文的处理也更智能)。

    注意:IK分词器的版本要和ES完全一致(小版本号也要完全一致)

    (0)在ES安装路径的plugins目录下新建ik目录

    1. #叫什么名字无所谓;ES会自动扫描plugins路径中的信息,发现插件后会自动加载。
    2. mkdir ik
    3. cd ik

    (1)选择对应的版本,并下载。

    wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.14.0/elasticsearch-analysis-ik-7.14.0.zip

     github现在对应版本: IK

    (2)解压

    1. unzip elasticsearch-analysis-ik-7.14.0.zip
    2. 注:如果没有unzip需要用yum install -y unzip 安装

    (3)重启ES就可以了。

    4、中文分词器(IK分词器)使用

    IK分词器有两种颗粒度的拆分,两种分词简名分别是ik_smart和ik_max_word:

    ik_smart:最粗粒度的拆分。

    ik_max_word:会将文本做最细粒度的拆分。

    如下实际测试就可以直观看到分词效果。 

    1. POST /_analyze
    2. {
    3. "text":"中华人民",
    4. "analyzer": "ik_smart"
    5. }
    6. POST /_analyze
    7. {
    8. "text":"中华人民",
    9. "analyzer": "ik_max_word"
    10. }

    5、扩展词、停用词配置

    IK支持自定义 扩展词典 和 停用词典。

    扩展词典:有些此并不是关键词,但是也希望被ES用来作为检索的关键词,可以将这些词加入扩展词典。

    停用词典:有些此是关键词,但是出于业务需要不想这些关键词被检索到,可以将这些词放入停用词典。

    举个例子:现在有一家公司名称为“全知科技”,另外有一个员工叫做“谭锦黎”。默认情况下即便是ik_max_word也不知道"全知"、“谭锦黎”是一个单独的词,但是我又有这种“全知  谭锦黎”的搜索需求。这个时候我们就可以借助扩展词配置来实现。

    具体配置:

    (0)分词器下有如下文件“分词器/config/IKAnalyzer.cfg.xml”,内容如下。

    1. properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    2. <properties>
    3. <comment>IK Analyzer 扩展配置comment>
    4. <entry key="ext_dict">entry>
    5. <entry key="ext_stopwords">entry>
    6. properties>

    (1)在配置文件中指定扩展字典文件名称为 shuozhuoext.dict

    (2)然后在此路径下创建shuozhuoext.dic文件,并在文件中添加你想要扩展的关键词,如下。

    (3)然后重启ES 

    (4)验证效果如下

     (5)另外分词器/config目录下也给我们预先配置好了诸多生僻的词组,存与对应的.dic文件中。

    通常扩展词典/停用词典分别就在默认的extra_main.dic和extra_stopword.dic中扩展就行了。

    必要的时候再自己创建词典。

  • 相关阅读:
    【网络安全】网络安全基础必备技能
    Lidar和IMU(INS)外参标定----常用开源项目总结
    when calibrate the “gain, offset“ of the DN formula to radiance? cycle avoided?
    【机器学习】有监督学习算法之:逻辑回归
    睿趣科技:抖音店铺名字怎么更吸引人
    2023 龙蜥操作系统大会演讲实录:《兼容龙蜥的云原生大模型数据计算系统——πDataCS》
    字节、华为、美团软件测试面试真题(超详细~)
    Nginx下载安装与配置(linux)
    《微服务实战》 第二十章 Redis连接指令 客户端指令 服务器指令
    用ffmpeg删除视频的音轨,让视频静音
  • 原文地址:https://blog.csdn.net/mijichui2153/article/details/126177041