ElasticSearch 安装(Windows)

概念

ES是一款分布式全文搜索引擎,基于Lucene,进行了二次封装,更容易上手。

安装

基于Java环境,需提前安装好Java环境。

安装es

官网可能会比较慢,国内也有镜像站 华为
这是ES历史版本

  • 解压
  • 启动 ./bin/elasticsearch.bat
  • 访问 127.0.0.1:9200
    在这里插入图片描述
自定义配置
# 集群名称 集群内所有节点一致
cluster.name: my-application
# 集群内 节点的名称
node.name: node-1
# 允许通过哪个网卡访问
network.host: 0.0.0.0
# 绑定的端口
http.port: 9200
# 集群节点间发现
discovery.seed_hosts: ["192.168.0.101"]
cluster.initial_master_nodes: ["node-1"]
# 集群节点内部通信端口
transport.tcp.port: 9300
# 可以参与主节点选举
node.master: true
# 可以参与数据节点选举
node.data: true
# 允许跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
安装Elastic-head

这里采用Docker安装

docker run -p 9100:9100 mobz/elasticsearch-head:5

可能需要设置允许跨域,参考官方

http.cors.enabled: true
http.cors.allow-origin: "*"

再一个如果不在一台主机可能需要修改主机地址
/usr/src/app/_site/app.js 内 配置了主机地址,修改为实际的地址

安装Kibana
  • 下载,尽量与ES版本一致
  • 解压,运行
    在这里插入图片描述
  • 使用开发控制台
    在这里插入图片描述
  • 设置中文
    kibana.yml中 修改为
    i18n.locale: “zh-CN”

倒排索引

参考
其本质是对文档进行关键词(又称单词)提取并保存其出现频次,所在文档,出现位置等等信息,放入一条记录;所有记录组成了单词词典。

查询时,直接根据关键字去索引对应的文档,然后根据一系列权重算法进行排序。

而这种索引的形式就称为倒排索引。

在倒排索引中,分词就显得很重要。

分词器

  • 概念:将一句话拆分成一些合理的词,ES默认的分词器中,会将中文的每个字解析成一个词,不具有意义,需要安装合乎汉语语义的分词器。
IK分词器

Ik分词器提供了两个分词算法:ik_smart(简单拆分,仅仅按字典做拆分),ik_max_word(连续的一个或多个有含义的多个字都会拆成一个词)
明显,max比smart分词更多,词典更大,占用内存更多,更准确

  • 下载ik分词器(注意ES版本一致)
    github
  • 解压至对应es的plugins目录下
  • 重启es即可
    在这里插入图片描述
ES命令
elasticsearch-plugin
  • E:\es\elasticsearch-7.16.3\bin>elasticsearch-plugin --help
    A tool for managing installed elasticsearch plugins
    Commands

list - Lists installed elasticsearch plugins #es当前已加载的插件列表
install - Install a plugin #在es中安装一个插件
remove - removes plugins from Elasticsearch #从当前es中移除一个插件

Non-option arguments:
command

Option Description


-E Configure a setting
-h, --help Show help
-s, --silent Show minimal output
-v, --verbose Show verbose output

测试

基于Kibana控制台测试

  1. 使用 ik_smart 算法对指定文本分词
GET _analyze
{
  "analyzer": "ik_smart",
  "text": [
    "name","小明","我的你的","单词词典(Lexicon):搜索引擎的通常索引单位是单词,单词词典是由文档集合中出现过的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息以及指向“倒排列表”的指针眼。"
    ]
}

以最后三个字为例
smart 分词会分为:

{
      "token" : "指",
      "start_offset" : 102,
      "end_offset" : 103,
      "type" : "CN_CHAR",
      "position" : 49
    },
    {
      "token" : "针眼",
      "start_offset" : 103,
      "end_offset" : 105,
      "type" : "CN_WORD",
      "position" : 50
    }

而 max_word 分词会分为

  {
     "token" : "指针",
     "start_offset" : 102,
     "end_offset" : 104,
     "type" : "CN_WORD",
     "position" : 57
   },
   {
     "token" : "针眼",
     "start_offset" : 103,
     "end_offset" : 105,
     "type" : "CN_WORD",
     "position" : 58
   }
自定义词汇
场景

当分词器没有按预期的结果进行分词时,我们可以自定义词语并扩展到词典中。

扩展ik分词器
  • 在 IKAnalyzer.cfg.xml 配置文件中配置自己的词典
    在这里插入图片描述
  • 然后在对应目录(这里就是当前目录)创建对应的文件,每行表示一个词

在这里插入图片描述
在添加自定义词典之前
最大分词也不能分出 气很这个词,在添加后即可分出该词汇(smart和max_word都可以)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值