ElasticSearch 7.x学习笔记(二)

1、Elasticsearch核心概念

  • 索引(index):类似的数据放在一个索引,非类似的数据放不同索引,一个索引也可以理解成一个关系型数据库。
  • 类型(type):代表document属于index中的哪个类别(type)也有一种说法一种type就像是数据库的表。 ES 5.x中一个index可以有多种type。 ES 6.x中一个index只能有一种type。 ES 7.x以后 要逐渐移除type这个概念。
  • 映射(mapping):定义了每个字段的类型等信息。相当于关系型数据库中的表结构。常用的数据类型有text、keyword、number、array、range、boolean、date、geo_point、ip、nested、object

ElasticSearch 7.x学习笔记(二)

2、安装配置kibana

ElasticSearch没有自带图形化界面,我们可以通过安装ElasticSearch的图形化插件,完成图形化界面的 效果,完成索引数据的查看,比如可视化插件Kibana。
  •  root账户下解压安装包到/usr/local/kibana 目录下
// 解压安装包
tar -zxvf kibana-7.3.0-linux-x86_64.tar.gz

// 移入指定目录
mv /root/kibana-7.3.0-linux-x86_64 /usr/local/kibana/

3、设置访问权限和配置kibana核心配置

// 设置文件夹读写权限
chmod -R 777 /usr/local/kibana/

####编辑 kibana 核心配置文件 usr/local/kibana/config/kibana.yml
// kibana端口,
server.port: 5601 

// 访问ip
server.host: "0.0.0.0" 

// elasticsearch服务器ip
elasticsearch.hosts: ["http://192.168.64.4:9200"]

4、配置完毕,切换用户启动kibana

// 切换用户
su es

// 启动kibana,启动文件位于/usr/local/kibana/bin下

sh kibana     

启动出现下图所示,则表明kibana 启动成功

 ElasticSearch 7.x学习笔记(二)

 5、访问测试 http://192.168.64.4:5601

如果kibana 成功启动还是无法访问下界面,可能是没有开放5601端口,请执行下面命令开放5601端口

firewall-cmd --zone=public --add-port=5601/tcp --permanent

ElasticSearch 7.x学习笔记(二)

 ElasticSearch 7.x学习笔记(二)

 6、Elasticsearch集成IK分词器(下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.3.0)

下载插件并安装(安装方式一) 
  1. 在elasticsearch的bin目录下执行以下命令,es插件管理器会自动帮我们安装,然后等待安装完成
/usr/local/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis- ik/releases/download/v7.3.0/elasticsearch-analysis-ik-7.3.0.zip

   2. 下载完成后会提示 Continue with installation?输入 y 即可完成安装 

   3.  重启Elasticsearch 和Kibana

上传安装包安装 (安装方式二) 
  1.  在elasticsearch安装目录的plugins目录下新建 analysis-ik 目录
// 新建analysis-ik文件夹 
mkdir analysis-ik 

// 切换至 analysis-ik文件夹下 
cd analysis-ik 

//上传资料中的 elasticsearch-analysis-ik-7.3.0.zip 

// 安装unzip 命令包(按需)
yum -y install unzip

// 解压 
unzip elasticsearch-analysis-ik-7.3.3.zip 

// 解压完成后删除zip (一定要删除安装包,否则启动会报错)
rm -rf elasticsearch-analysis-ik-7.3.0.zip

  2. 重启Elasticsearch 和Kibana 

IK分词器有两种分词模式:ik_max_word和ik_smart模式 1)ik_max_word (常用):会将文本做最细粒度的拆分  2)ik_smart:会做最粗粒度的拆分 

7、测试IK分词器

IK的ik_max_word 分词器

ElasticSearch 7.x学习笔记(二)

IK的ik_smart 分词器

 ElasticSearch 7.x学习笔记(二)

 8、IK扩展词典的应用

就是不想让哪些词被分开,让他们分成一个词
  • 进入到 confifig/analysis-ik/(插件命令安装方式) 或 plugins/analysis-ik/confifig(安装包安装方式) 目录下, 新增自定义词典 
//创建扩展词字典
vim ext_dict.dic

//输入不想拆分开的词后保存
  • 将扩展词词典配置到IK 的核心配置文件 IKAnalyzer.cfg.xml中,然后重启elasticsearch

ElasticSearch 7.x学习笔记(二)

 9、同义词字典配置

中文博大精深,中文中存在着很多同样意思的词语,如土豆=马铃薯,番茄=西红柿等,有的人喜欢用土豆搜索,有的人喜欢使用马铃薯搜索,但其实这两个是同一种物品,怎么才能做到搜索土豆自动出现马铃薯呢,这就需要我们使用同义词词典

Elasticsearch 自带一个名为 synonym 的同义词 fifilter。为了能让 IK 和 synonym 同时工作,我们需要定义新的 analyzer,用 IK 做 tokenizer,synonym 做 fifilter。听上去很复杂,实际上要做的只是加一段配置。
  • 在elasticsearch安装目录下创建ik/synonym.txt文件 ( /usr/local/elasticsearch/config/ik/synonym.txt )
  • 编辑synonym.txt文件,添加同义词组后保存

ElasticSearch 7.x学习笔记(二)

  • 创建索引时,使用同义词配置,如下面样例
PUT /index1
{ 
  "settings": { 
    "analysis": { 
      "filter": { 
        "word_sync": { 
          "type": "synonym", 
          "synonyms_path": "ik/synonym.txt" 
        }         
      },
      "analyzer": { 
        "ik_sync_max_word": { 
          "filter": [ "word_sync" ],
          "type": "custom", 
          "tokenizer": "ik_max_word" 
        },
        "ik_sync_smart": { 
          "filter": [ "word_sync" ],
          "type": "custom", 
          "tokenizer": "ik_smart" 
        } 
      } 
    } 
  },
  "mappings": { 
    "properties": { 
      "name": { 
        "type": "text", 
        "analyzer": "ik_sync_smart", 
        "search_analyzer": "ik_sync_smart" 
      } 
    } 
  } 
}
  • 向索引中添加数据测试同义词词典是否生效
POST /index1/_doc/1 
{ 
    "name":"云南居然盛产七彩土豆,以前从没见过!" 
}
  • 使用同义词"马铃薯"进行搜索

ElasticSearch 7.x学习笔记(二)

 

 

 

 

 

上一篇:python 蓝桥杯--数的读法


下一篇:八结点(广搜)