ELK技术栈之——分布式搜索--Elasticsearch+Kibana_金蒂-CSDN博客一、背景关于ELK的技术栈大家一定不陌生,EKL分别为 分布式搜索Elasticsearch、日志的收集LogStash、提供友好界面的Kibana,ELK技术栈被广泛应用在日志数据分析、实时监控等领域‘。二、初识Elasticsearchelasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。我们为什么要学习Elasticsearch?看一下全球搜索技术排行:三、Elasticsearch与传统数据库搜索对比搜索方式:ELhttps://blog.csdn.net/weixin_44693109/article/details/122441355前言:上一篇我们介绍了关于Elasticsearch和Kibana的安装 这一篇简单介绍一下关于Elasticsearch的使用
Elasticsearch起初在学习的时候也是查阅了相关官网资料和一些相关视频 总结了一些个人笔记方分享大家
相关文档资料:ELK中文手册
Elasticsearch官网中文手册
目录
背景:
1.安装IK分词器——在线安装
2.安装IK分词器——离线安装
2.1 IK分词器的两种分词模式
2.2 IK分词器添加扩展词库
2.3 扩展——词库热更新等
3.索引库的概念
4.索引库的增删改查
4.1创建索引库
4.2查看-删除 索引库
4.3修改索引库
5.文档的增删改查
5.1 添加文档
5.2查看文档 删除文档
5.3修改文档(包括全量修改和增量修改)
背景:
es在创建倒排索引时需要对文档分词;在搜索时,需要对用户输入內容分词。但默认的分词规则对中文处理并不友好 所以我们在使用Elasticsearch的时候最好安装一个分词器
1.安装IK分词器——在线安装
#进入容器内部docker exec-it elasticsearch/bin/bash在线下载并安装bin/elasticsearch-plugin installhttps://github.com/medc1/elasticsearch-analysiik/releases/download/v7.12.1/e1asticsearch-analysis-ik-712 1、zip#退出exlt重启容器exit#重启容器docker restart elasticsearch
2.安装IK分词器——离线安装
安装插件需要知道 elasticsearch的 Iplugins(数据卷)目录位置,而我们用了数据卷挂载,因此需要查看 elasticsearch的数据卷目录,通过下面命令查看:docker volume inspect es-plugins将我们下载好的压缩文件解压 上传到iplugins目录下重启容器docker restart es#查看es日志docker logs -f es
2.1 IK分词器的两种分词模式
K分词器包含两种模式
ik_ smart:最少切分——粗粒度
ik_max_word:最细切分——最细粒度(内存占用更多)
2.2 IK分词器添加扩展词库
IK分词器既然可以做到对语句进行分词 那么 这个的底层一定有一个类似于词典的东西,那么问题来了,随着我们越来越多的网络名称,这个词典一定有不能分辨的词出现,这个时候就需要对这个词典进行扩展词库了
==========
要拓展k分词器的词库,只需要修改一个k分词器目录中的 config目录中的 analyzer.cfg.xml文件
2.3 扩展——词库热更新等
中文社区:ik分词器 - Elastic 中文社区
3.索引库的概念
mapping类似于MySQL中数据的约束类型 ES中也有一套类似的规范
常见的mapping属性包括:
type:字段数据类型,常见的简单类型有:
- 字符串:text(可分词文本)keyword(不可分词文本:国家 品牌)
- 数值:long、integer、short、byte、double、float
- 布尔类型:boolean
- 日期:date
- 对象:object
index:是否创建索引analyzer:使用哪一种分词器properties:该字段的子字段
在mapping中没有数组的概念 但是可以同一种类型的词出现多次
4.索引库的增删改查 4.1创建索引库
ES中通过 Restful请求操作索引库、文档。请求内容用DSL语句来表示。创建索引库和 mapping的DSL语法如下
# 创建索引库PUT /yibai{ "mappings":{ "properties": { # 信息 text类型 分词类型为ik_smart "info":{ "type": "text", "analyzer": "ik_smart" }, # 邮箱 keyword类型 不创建索引(不写默认为创建) "email":{ "type": "keyword", "index": false }, #姓名 object类型 姓名下边还有分类 第一个字 最后一个字 类型都是keyword "name":{ "type": "object", "properties": { "firstName":{ "type":"keyword" }, "lastName":{ "type":"keyword" } } } } }}############注意 DSL语句中是不允许写注释的 这里为了方便理解加入代码内部注释##########
4.2查看-删除 索引库
//查看索引库语法:GET / 索引库名GET / yibai//删除索引库语法:DELETE / 索引库名DELETE / yibai
4.3修改索引库
在es语法中是禁止修改索引库的 因为一开始已经创建好了倒排索引 修改完一个字段的话就会导致原来的倒排索引失效
索引库和 mapping-旦创建无法修改,但是可以添加新的字段,语法如下:
注意:新的字段名称一定不能和原来的重复 不然es会认为你在修改 就会报错
# 修改索引库(添加新字段)PUT /yibai/_mapping { "properties" :{ "age":{ "type":"integer" } }}
5.文档的增删改查 5.1 添加文档
POST /索引库名/_doc/文档id{"字段1":"值1", "字段2":"值2", "字段2":{ "子属性1":"值3", "子属性2":"值4" }}
5.2查看文档 删除文档
// _doc 固定写法GET /索引库名/_doc/文档id//例如:GET /yibai/_doc/1 ====================分割线=================// 删除文档DELETE /索引库名/_doc/文档idversion属性:每次进行数据操作都会对version属性+1
5.3修改文档(包括全量修改和增量修改)
全量修改
PUT /索引库名/_doc/文档id{"字段1":"值1", "字段2":"值2"}============================PUT /yibai/_doc/2{ "age":23, "info":"这里被修改了", "email":"15176735701@163.com", "name":{ "firstName":"金", "lastName":"蒂" }}ps1:全量更改需要将所有的字段都加上,然后把需要改的进行更改,不然就会把没写上的字段删除ps2:如果要查询的文档id没有的话 更新就会变成添加文档
更新
添加
增量修改
#局部修改文档字段POST /yibai/_update/1{ "doc": { "info":"修改内容" }}ps1:修改指定字段的内容需要将索引库后边的_doc改为_update ps2:与全局修改不同的是不需要将所有字段都写上 但是需要加在"doc"下进行字段修改
总结:针对与ES的操作主要是对索引库和文档的操作 基本的增删改查和需要注意的地方就是这些了 记住一些关键字还是比较简单的