ElasticSearch 安装

ElasticSearch

概念

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

安装

安装es

  • 下载官网
  • 解压
  • 启动 ./bin/elasticsearch.bat
  • 访问 127.0.0.1:9200

    在这里插入图片描述

安装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都可以)

在这里插入图片描述

相关文章

TCP/IP套接字登录方法是MySQL在一切服务平台都提供的一种登录...
easy-rule规则引擎最佳落地
Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分...
最近壹哥的一个学生,在利用spring-data-elasticsearch访问E...
java 操作elasticsearch详细总结
原文链接:http://www.ruanyifeng.com/blog/2017/08/elastic...