Elasticsearch安装配置教学(一文搞定)

目录

1.ES简介

2.ES安装

3.IK分词器

4.利用Kibana的Devops平台进行相关的ES操作


1.ES简介

Elasticsearch 是一个基于 Lucene 的开源搜索引擎,它提供了全文搜索、分析和数据索引的功能。Elasticsearch 通常与 Logstash(一个服务器端数据处理管道)、Kibana(一个开源的数据可视化工具)一起使用,这三个工具合称为 ELK Stack。随着 Beats(一个轻量级的日志和指标收集器)的加入,现在通常称为 Elastic Stack。

elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域:

 

而ES能够被广泛使用,有一个最核心的原因就是因为ES底层采用的倒排索引。

什么是倒排索引?

倒排索引中有两个非常重要的概念:

  • 文档(Document):用来搜索的数据,其中的每一条数据就是一个文档。例如一个网页、一个商品信息
  • 词条(Term):对文档数据或用户搜索数据,利用某种算法分词,得到的具备含义的词语就是词条。例如:我是中国人,就可以分为:我、是、中国人、中国、国人这样的几个词。

创建倒排索引是对正向索引的一种特殊处理,流程如下:

  • 将每一个文档的数据利用算法分词,得到一个个词条
  • 创建表,每行数据包括词条、词条所在文档id、位置等信息
  • 因为词条唯一性,可以给词条创建索引,例如hash表结构索引

当用户开始模糊搜索时,首先是查询词条,因为每个词条都绑定了文章id,所以再根据文档id查询到本来的文档,这样一个流程就是倒排索引。

正向和倒排的对比:

  • 正向索引是最传统的,根据id索引的方式。但根据词条查询时,必须先逐条获取每个文档,然后判断文档中是否包含所需要的词条,是根据文档找词条的过程

  • 倒排索引则相反,是先找到用户要搜索的词条,根据词条得到保护词条的文档的id,然后根据id获取文档。是根据词条找文档的过程

优缺点:

        正向索引

  • 优点:
    • 可以给多个字段创建索引
    • 根据索引字段搜索、排序速度非常快
  • 缺点:
    • 根据非索引字段,或者索引字段中的部分词条查找时,只能全表扫描。

        倒排索引

  • 优点:
    • 根据词条搜索、模糊搜索时,速度非常快
  • 缺点:
    • 只能给词条创建索引,而不是字段
    • 无法根据字段做排序

2.ES安装

你可以直接去官网进行下载,或者利用docker pull 但是es很大,如果网络不好很容易失败,这里我把es放进网盘里,有需要的可以直接下载

链接:https://pan.baidu.com/s/1JVe89Sv32yXVdiaRqLGEbA?pwd=jvop 
提取码:jvop

 下载到本地以后,上传到你的虚拟机里,然后利用下面的命令:

docker run -d \
  --name es \
  --restart always \
  -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
  -e "discovery.type=single-node" \
  -v es-data:/usr/share/elasticsearch/data \
  -v es-plugins:/usr/share/elasticsearch/plugins \
  --privileged \
  --network hm-net \
  -p 9200:9200 \
  -p 9300:9300 \
  elasticsearch:7.12.1

命令解释:

  • -e "cluster.name=es-docker-cluster":设置集群名称
  • -e "http.host=0.0.0.0":监听的地址,可以外网访问
  • -- restart always 开机重启
  • -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小
  • -e "discovery.type=single-node":非集群模式
  • -v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录
  • -v es-logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录
  • -v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录
  • --privileged:授予逻辑卷访问权
  • --network es-net :加入一个名为es-net的网络中
  • -p 9200:9200:端口映射配置

启动完成以后,直接在浏览器端口内输入你的ip端口号:9200,出现下面的结果,说明安装成功

为了方便操作我们还需要安装Kibana可视化平台

同样的网盘提供了kibana的安装包有需要可以去下载

链接:https://pan.baidu.com/s/1iotKpmwjxJDV4lR-V7Xp2A?pwd=2drg 
提取码:2drg

下载好上传到虚拟机,解压,输入下面命令

docker run -d \
--name kibana \
--restart always \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=hm-net \
-p 5601:5601  \
kibana:7.12.1

 然后浏览器输入ip端口:5601出现下方界面即安装运行成功。

3.IK分词器

IK分词器是一个基于Java语言开发的轻量级的中文分词工具包,它结合了词典分词和文法分析算法,适用于Elasticsearch等全文检索系统,以提高中文文本处理的效率和准确性

有两种方式安装IK分词器

1.直接命令窗口安装

docker exec -it elasticsearch /bin/bash 进入安装好的es容器

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.2/elasticsearch-analysis-ik-7.9.2.zip  注意安装的ik分词器版本一定要和ES版本保持一致

但是命令行方式如果网络不好很容易失败

2.文件夹直接拖入

直接去github官网下载IK分词器的文件夹,拖入ES的插件文件夹目录,然后重启ES即可

至于如何找到es的插件目录,可以按我下面的步骤来:

docker volume inspect es-plugins

显示结果:

[
    {
        "CreatedAt": "2022-05-06T10:06:34+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/es-plugins/_data",
        "Name": "es-plugins",
        "Options": null,
        "Scope": "local"
    }
]

这个Mountpoint后面的就是插件目录

安装好后重启es

docker restart es

同时IK文件加下面有个config文件夹

里面有个IKAnalyzer的文件,这个文件主要是用于扩展词汇和停用,打开后如下方:

 4.利用Kibana的Devops平台进行相关的ES操作

 说道操作,就必须先说一下es的索引和映射,以及和mysql的不同

索引就像数据库里的表,映射就像数据库中定义的表结构

  • 所有用户文档,就可以组织在一起,称为用户的索引;
  • 所有商品的文档,可以组织在一起,称为商品的索引;
  • 所有订单的文档,可以组织在一起,称为订单的索引;

在ES中Mapping映射关系分为以下几种:

mapping是对索引库中文档的约束,常见的mapping属性包括:

  • type:字段数据类型,常见的简单类型有:

    • 字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)

      keyword类型只能整体搜索,不支持搜索部分内容

    • 数值:long、integer、short、byte、double、float、

    • 布尔:boolean

    • 日期:date

    • 对象:object

  • index:是否创建索引,默认为true

  • analyzer:使用哪种分词器

  • properties:该字段的子字段

下面我将给出利用Kibana的Devops平台给出具体的代码示例:

 

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code apprenticeship

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值