【Elasticsearch】学习笔记-p1(初识Elasticsearch),小红书java技术面试答案

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

数据库的表会有约束信息,用来定义表的结构、字段的名称、类型等信息。因此,索引库中就有映射(mapping),是索引中文档的字段约束信息,类似表的结构约束。

3.3 mysql 与 elasticsearch

| MySQL | Elasticsearch | 说明 |

| :-- | :-- | :-- |

| Table | Index | 索引index,就是文档的集合,类似数据库的表table |

| Row | Document | 文档(Document),就是一条条的数据,类似数据库中的行(Row),文档都是JSON格式 |

| Column | Field | 字段(Field),就是JSON文档中的字段,类似数据库中的列(Column) |

| Schema | Mapping | Mapping(映射)是索引中文档的约束,例如字段类型约束。类似数据库的表结构(Schema) |

| SQL | DSL | DSL是elasticsearch提供的JSON风格的请求语句,用来操作elasticsearch,实现CRUD |

  • Mysql:擅长事务类型操作,可以确保数据的安全和一致性

  • Elasticsearch:擅长海量数据的搜索、分析、计算

因此在企业中,往往是两者结合使用:

  • 对安全性要求较高的写操作,使用 MySQL 实现

  • 对查询性能要求较高的搜索需求,使用 ELasticsearch 实现

  • 两者再基于某种方式,实现数据的同步,保证一致性

img

4.安装Elasticsearch、kibana、IK分词器


4.1 部署单点Elasticsearch

因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络:

docker network create es-net


法一:可以直接pull(速度较慢)

法二:用提供的镜像的tar包

这里我们采用elasticsearch的7.12.1版本的镜像,这个镜像体积非常大,接近1G。不建议大家自己pull。

这里演示法二,大家将其上传到虚拟机中,然后运行命令加载即可:

导入数据

docker load -i es.tar

同理还有kibana的tar包也需要这样做。


运行docker命令,部署单点es:

docker run -d \

–name es \

-e “ES_JAVA_OPTS=-Xms512m -Xmx512m” \

-e “discovery.type=single-node” \

-v es-data:/usr/share/elasticsearch/data \

-v es-plugins:/usr/share/elasticsearch/plugins \

–privileged \

–network es-net \

-p 9200:9200 \

-p 9300:9300 \

elasticsearch:7.12.1

命令解释:

  • -e "cluster.name=es-docker-cluster":设置集群名称

  • -e "http.host=0.0.0.0":监听的地址,可以外网访问

  • -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小

  • -e "discovery.type=single-node":非集群模式

  • -v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录

  • -v es-logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录

  • -v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录

  • --privileged:授予逻辑卷访问权

  • --network es-net :加入一个名为es-net的网络中

  • -p 9200:9200:端口映射配置

在浏览器中输入:http://192.168.150.101:9200 (需要改成自己虚拟机的ip)即可看到elasticsearch的响应结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JShkYUaM-1637146335818)(file://C:\Users\30287\Desktop\Java%E5%AD%A6%E4%B9%A0%E8%A7%86%E9%A2%91\day05-Elasticsearch01%E8%B5%84%E6%96%99\assets\image-20210506101053676.png?lastModify=1637140674)]

4.2 部署kibana

运行docker命令,部署kibana:

docker run -d \

–name kibana \

-e ELASTICSEARCH_HOSTS=http://es:9200 \

–network=es-net \

-p 5601:5601 \

kibana:7.12.1

命令解释:

  • --network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中

  • -e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch

  • -p 5601:5601:端口映射配置

此时,在浏览器输入地址访问:http://192.168.150.101:5601,即可看到结果

img

4.3 安装IK分词器

在线安装IK插件(较慢):

进入容器内部

docker exec -it elasticsearch /bin/bash

在线下载并安装

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip

#退出

exit

#重启容器

docker restart elasticsearch

这里演示离线安装iK插件:

查看数据卷目录

安装插件需要知道elasticsearchplugins目录位置,而我们用了数据卷挂载,因此需要查看elasticsearch的数据卷目录,通过下面命令查看:

docker volume inspect es-plugins

显示结果:

[

{

“CreatedAt”: “2022-05-06T10:06:34+08:00”,

“Driver”: “local”,

“Labels”: null,

“Mountpoint”: “/var/lib/docker/volumes/es-plugins/_data”,

“Name”: “es-plugins”,

“Options”: null,

“Scope”: “local”

}

]

说明plugins目录被挂载到了:/var/lib/docker/volumes/es-plugins/_data这个目录中。

将准备好的文件夹上传到es容器的插件数据卷中

也就是/var/lib/docker/volumes/es-plugins/_data

img

重启容器

docker restart es

IK分词器包含两种模式:

  • ik_smart:智能切分,粗粒度

  • ik_max_word:最细切分,细粒度

我们在上面的 Kibana 控制台测试

GET /_analyze

{

“analyzer”: “ik_max_word”,

“text”: “黑马程序员学习java太棒了”

}

结果:

{

“tokens” : [

{

“token” : “黑马”,

“start_offset” : 0,

“end_offset” : 2,

“type” : “CN_WORD”,

“position” : 0

},

{

“token” : “程序员”,

“start_offset” : 2,

“end_offset” : 5,

“type” : “CN_WORD”,

“position” : 1

},

{

“token” : “程序”,

“start_offset” : 2,

“end_offset” : 4,

“type” : “CN_WORD”,

“position” : 2

},

{

“token” : “员”,

“start_offset” : 4,

“end_offset” : 5,

“type” : “CN_CHAR”,

“position” : 3

},

{

“token” : “学习”,

“start_offset” : 5,

“end_offset” : 7,

“type” : “CN_WORD”,

“position” : 4

},

{

“token” : “java”,

“start_offset” : 7,

“end_offset” : 11,

“type” : “ENGLISH”,

“position” : 5

},

{

“token” : “太棒了”,

“start_offset” : 11,

“end_offset” : 14,

“type” : “CN_WORD”,

“position” : 6

},

{

“token” : “太棒”,

“start_offset” : 11,

“end_offset” : 13,

“type” : “CN_WORD”,

“position” : 7

},

{

“token” : “了”,

“start_offset” : 13,

“end_offset” : 14,

“type” : “CN_CHAR”,

“position” : 8

}

]

}

5.扩展和停用词典


5.1 扩展词典

随着互联网的发展,“造词运动”也越发的频繁。出现了很多新的词语,在原有的词汇列表中并不存在。比如:“奥力给”,“传智播客” 等。

所以我们的词汇也需要不断的更新,IK分词器提供了扩展词汇的功能。

1)打开IK分词器config目录:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IGQnktY1-1637146335824)(C:\Users\30287\Desktop\Java学习视频\day05-Elasticsearch01\资料\assets\image-20210506112225508.png)]

2)在IKAnalyzer.cfg.xml配置文件内容添加:

<?xml version="1.0" encoding="UTF-8"?>

IK Analyzer 扩展配置

ext.dic

3)新建一个 ext.dic,可以参考config目录下复制一个配置文件进行修改

传智播客

奥力给

4)重启elasticsearch

docker restart es

日志中已经成功加载ext.dic配置文件

5)测试效果:

最后

本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以送给我的读者朋友们

目录:

全靠这套面试题,才让我有惊无险美团二面拿offer  (面经解析)

Java面试核心知识点

一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!

全靠这套面试题,才让我有惊无险美团二面拿offer  (面经解析)

Java面试核心知识点

已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了

全靠这套面试题,才让我有惊无险美团二面拿offer  (面经解析)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

docker restart es

日志中已经成功加载ext.dic配置文件

5)测试效果:

最后

本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以送给我的读者朋友们

目录:

[外链图片转存中…(img-j53nBzPB-1713436048647)]

Java面试核心知识点

一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!

[外链图片转存中…(img-wm5Y3ZDO-1713436048648)]

Java面试核心知识点

已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了

[外链图片转存中…(img-uug75zlG-1713436048648)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-nXMYPcA5-1713436048649)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 27
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值