ElasticSearch入门环境搭建(一)

本文最后更新于:2023年11月9日 晚上

ElasticSearch入门环境搭建(一)

ElasticSearch

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。
Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

  • ElasticSearch版本7.9.3
  • kibana版本7.9.3
  • ik分词器版本7.9.3

安装ElasticSearch

1. 下面有两种下载方式:(官网下载堪比蜗牛,推荐大家使用第二种镜像的方式下载)

2. 解将压缩包解压

  • 来熟悉下目录

bin:二进制脚本,包含启动命令和安装插件命令等
comfig:配置文件(里面包含ElasticSearch、jvm、log4j等多个配置文件)
data:数据储存目录
lib:相关Jar依赖包
logs:日志文件
modules:功能模块
plugins:插件目录

3. 启动ElasticSearch

进入ElasticSearch的 bin 目录双击运行 elasticsearch.bat


4. 测试访问ElasticSearch

  • ElasticSearch的默认端口为9200,启动完成后直接在浏览器中访问 127.0.0.1:9200
  • 随后ElasticSearch就会返回JSON格式的一些基本信息
  • 最后一个属性挺有意思:”tagline” : “You Know, for Search” 你知道的,为了搜索

安装可视化界面

  • 下载elasticsearch-head:github地址 https://github.com/mobz/elasticsearch-head

  • 1. 可以使用git命令下载:git clone https://github.com/mobz/elasticsearch-head

  • 2. 或者直接点击下载ZIP的压缩包(不会真有人没安装git吧?百度自己去下载吧)

  • 这里需要使用node.js进行项目初始化和导入依赖(如果没安装node.js的话,去官网下载安装即可,无需配置)

  • node.js官网:https://nodejs.org/zh-cn

  • 安装完后查看node以及npm是否安装成功

  • 查看node.js版本:node -v 查看npm版本:npm -v

  • 安装cnpm国内淘宝镜像(因为使用npm非常的慢)

  • 命令:npm install -g cnpm –registry=https://registry.npm.taobao.org

  • 安装完成cnpm后使用 cnpm -v 检查是否安装成功(如下图)

  • 使用cmd或者git进入elasticsearch-head的目录下执行(文件名太长了这里使用git)

  • 初始化elasticsearch-head这个项目模块 命令:cnpm install

  • 运行此项目 命令:npm run start

  • 成功之后让我们去访问 http://localhost:9100(elasticsearch是9200,elasticsearch-head是9100)

  • 我们安装好可视化界面后尝试连接下elasticsearch看看是否成功

  • 无法连接到elasticsearch服务 其实一个是跨域的问题

  • 解决跨域问题

  1. 进入elasticsearch的config目录并打开elasticsearch.yml配置文件
  2. 在后面加上此内容即可解决跨域问题
1
2
http.cors.enabled: true
http.cors.allow-origin: "*"

  • 重启elasticsearch 运行elasticsearch下bin目录的可执行文件elasticsearch.bat(在windows系统下直接双击即可)
  • 再次使用elasticsearch-head尝试连接elasticsearch服务 成功
  • 可以简单了解下elasticsearch-head的界面,后面再使用

安装kibana

kibana和elasticsearch都是拆箱即用,同样的下载分官方下载和华为云镜像下载。kibana也是如此(因为官方非常的慢)

访问kibana后发现全是English,如果是中文看起来肯定最舒服,如何让kibana变成中文?我们接下来汉化kibana

  • 汉化kibana
  • 进入kibana的bin目录打开 kibana.yml文件
  • 在最后一行加上: i18n.locale: “zh-CN”
  • 关闭kibana窗口重新运行bin目录下kibana.bat文件再访问:http://localhost:5601 汉化成功

IK分词器

  • 什么是IK分词器?

分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词器是将每个字看成一个词,比如”我爱技术”会被分为”我”,”爱”,”技”,”术”,这显然不符合要求,所以我们需要安装中文分词器IK来解决这个问题

IK提供了两个分词算法:ik_smart和ik_max_word
其中ik_smart为最少切分,ik_max_word为最细粒度划分

  • 安装IK分词器

**1. 下载IK分词器 github地址:https://github.com/medcl/elasticsearch-analysis-ik**(注意和elasticsearch版本对应)

2. 在elasticsearch的plugins目录下新建一个名为ik的文件夹,并将ik分词器压缩包解压到文件夹下面

3. 重启elasticsearch,让它去加载ik分词器插件
在启动时就可以明确的看到加载了ik分词器插件

也可以在elasticsearch的bin目录下通过cmd+命令查看加载的插件:elasticsearch-plugin list

- 使用kibana进行测试

上面说到ik分词器中的 ik_smart 为最少切分, ik_max_word 为最细粒度划分。用一个字符串来试试两者具体的区别
比如说我要搜索 刘亦菲真的很美,两种不同的方式会怎样进行分词

  • ik_smart 最少切分

  • ik_max_word 最细粒度划分

    ik_smart 将 刘亦菲真的很美 分为了:刘、亦、菲、真的、很美。五个词
    ik_max_word 将 刘亦菲真的很美 分为了:刘、亦、菲、真的、真的很、很美。六个词

  • 自定义分词

经过上面的两种测试,我们发现不管以什么方式进行分词,始终把某些我们认为的词组给分成了单个的字
例如上面的词,我想要的是 刘亦菲 ,而不是:刘、亦、菲 三个单独的字。这时候就需要把我们自定义的词组加到ik词典中去

  1. 首先进入到elasticsearch-7.9.3\plugins\ik\config 新建一个我们自己的 dic 文件 比如我这里取名为my.dic

  2. 打开我们自己的 .dic 文件,并加入我们想要的词语

  3. 打开config下的 IKAnalyzer.cfg.xml 配置文件 并配置我们刚刚的扩展词组

  4. 重启elasticsearch和kibana

  • 关闭elasticsearch和kibana的服务窗口
  • 分别先运行elasticsearch下bin目录中的 elasticsearch.bat
  • 以及kibana的bin目录下 kibana.bat
  1. 再次打开 http://localhost:5601 进行测试
  • ik_smart
  • ik_max_word
  • 这样就成功啦,就可以按照我们的方式进行分词了
只有懦弱和失败者才会四处寻找借口

ElasticSearch入门环境搭建(一)
http://example.com/2021/01/16/ElasticSearch入门环境搭建(一)/
作者
阿波~
发布于
2021年1月16日
更新于
2023年11月9日
许可协议