先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
正文
analysis:
analyzer:
ik:
alias: [ik_analyzer]
type: org.elasticsearch.index.analysis.IkAnalyzerProvider
ik_max_word:
type: ik
use_smart: false
ik_smart:
type: ik
use_smart: true
这样ik就安装好了
启动并试用
直接进入elasticsearch安装目录,执行
./bin/elasticsearch -d
后台启动完成
elasticSearch是通过HTTP协议收发数据的,所以我们用curl命令来给它发命令,elasticSearch默认监听9200端口
写入一篇文章:
curl -XPUT ‘http://localhost:9200/myappname/myblog/1?pretty’ -d ’
{
“title”: “我的标题”,
“content”: “我的内容”
}’
会收到返回信息:
{
“_index” : “myappname”,
“_type” : “myblog”,
“_id” : “1”,
“_version” : 1,
“created” : true
}
这说明我们成功把一篇文章发给了elasticSearch,它底层会利用lucene自动帮我们建好搜索用的索引
再写一篇文章:
curl -XPUT ‘http://localhost:9200/myappname/myblog/2?pretty’ -d ’
{
“title”: “这是第二篇标题”,
“content”: “这是第二篇内容”
}’
会收到返回信息:
{
“_index” : “myappname”,
“_type” : “myblog”,
“_id” : “2”,
“_version” : 1,
“created” : true
}
请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址
这时我们找到elasticsearch安装目录的data目录下会生成这样的目录和文件:
ls data/nodes/0/indices/myappname/
0 1 2 3 4 _state
不同环境会稍有不同,但是都会生成myappname目录就对了
查看所有文章:
curl -XGET ‘http://localhost:9200/myappname/myblog/_search?pretty=true’ -d ’
{
“query” : {
“match_all” : {}
}
}’
这时会把我们刚才添加的两篇文章都列出来
搜索关键词“我的”:
curl -XGET ‘http://localhost:9200/myappname/myblog/_search?pretty=true’ -d ’
{
“query”:{
“query_string”:{“query”:“我的”}
}
}’
会返回:
{
“took” : 2,
“timed_out” : false,
“_shards” : {
“total” : 5,
“successful” : 5,
“failed” : 0
},
“hits” : {
“total” : 1,
“max_score” : 0.191783,
“hits” : [ {
“_index” : “myappname”,
“_type” : “myblog”,
“_id” : “1”,
“_score” : 0.191783,
“_source”:
{
“title”: “我的标题”,
“content”: “我的内容”
}
} ]
}
}
搜索关键词“第二篇”:
curl -XGET ‘http://localhost:9200/myappname/myblog/_search?pretty=true’ -d ’
{
“query”:{
“query_string”:{“query”:“第二篇”}
}
}’
会返回:
{
“took” : 2,
“timed_out” : false,
“_shards” : {
“total” : 5,
“successful” : 5,
“failed” : 0
},
“hits” : {
“total” : 1,
“max_score” : 0.1879082,
“hits” : [ {
“_index” : “myappname”,
“_type” : “myblog”,
“_id” : “2”,
“_score” : 0.1879082,
“_source”:
{
“title”: “这是第二篇标题”,
“content”: “这是第二篇内容”
}
} ]
}
}
如果想检查ik的切词效果,可以执行:
curl ‘http://localhost:9200/myappname/_analyze?analyzer=ik_max_word&pretty=true’ -d’
{
“text”:“中华人民共和国国歌”
}’
通过返回结果可以看出,ik_max_word切词把中华人民共和国国歌切成了“中华人民共和国”、“中华人民”、“中华”、“华人”、“人民共和国”、“人民”、“共和国”、“共和”、“国”、“国歌”
也就是说我们搜索这些词中的任意一个都能把这句话搜到,如果不安装ik插件的话,那只会切成:“中”、“华”、“人”、“民”、“共”、“和”、“国”、“国”、“歌”,不够智能,搜索也不好进行了
讲解一下
上面几条命令都是json形式,elasticSearch就是这么人性化,没治了。
这里面的myappname是你自己可以改成自己应用的名字,这在elasticSearch数据存储中是完全隔离的,而myblog是我们在同一个app中想要维护的不同的数据,就是你的不同数据,比如文章、用户、评论,他们最好都分开,这样搜索的时候也不会混
pretty参数就是让返回的json有换行和缩进,容易阅读,调试时可以加上,开发到程序里就可以去掉了
analyzer就是切词器,我们指定的ik_max_word在前面配置文件里遇到过,表示最大程度切词,各种切,360度切
返回结果里的hits就是“命中”,total是命中了几条,took是花了几毫秒,_score就是相关性程度,可以用来做排序的依据
elasticSearch有什么用
上面都是json的接口,那么我们怎么用呢?其实你想怎么用就怎么用,煎着吃、炒着吃、炖着吃都行。比如我们的博客网站,当你创建一篇博客的时候可以发送“添加”的json命令,然后你开发一个搜索页面,当你输入关键词点搜索的时候,可以发送查询的命令,这样返回的结果就是你的搜索结果,只不过需要你自己润色一下,让展现更美观。感觉复杂吗?下一节告诉你怎么用symfony2的扩展来实现博客网站的搜索功能
————————————————————————————————————————————————————
简介
开始学es,我习惯边学边记,总结出现的问题和解决方法。本文是在两台Linux虚拟机下,安装了三个节点。本次搭建es同时实践了两种模式——单机模式和分布式模式。条件允许的话,可以在多台机器上配置es节点,如果你机器性能有限,那么可以在一台虚拟机上完成多节点的配置。
如图,是本次3个节点的分布。
虚拟机主机名 | IP | es节点 |
---|---|---|
master | 192.168.137.100 | node1、node3 |
slave | 192.168.137.101 | node2 |
一、下载及配置
1.几个基本名词
index: es里的index相当于一个数据库。
type: 相当于数据库里的一个表。
id: 唯一,相当于主键。
node:节点是es实例,一台机器可以运行多个实例,但是同一台机器上的实例在配置文件中要确保http和tcp端口不同(下面有讲)。
cluster:代表一个集群,集群中有多个节点,其中有一个会被选为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。
shards:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上,构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
replicas:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当个某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。
2.下载
名称 | 版本 | 下载地址 |
---|---|---|
elasticsearch | 1.7.3 | elasticsearch-1.7.3.tar.gz |
下载后,放到你的目录下并解压. 因为我们要配置包含三个节点的集群,可以先将其重命名为elasticsearch-node1。比如我的是 /home/zkpk/elasticsearch-node1。
3.修改配置文件
(1) 初步修改
打开/home/zkpk/elasticsearch-node1/config目录下的elasticsearch.yml 文件 ,修改以下属性值并取消该行的注释:
cluster.name: elasticsearch
#这是集群名字,我们 起名为 elasticsearch。es启动后会将具有相同集群名字的节点放到一个集群下。
node.name: “es-node1”
#节点名字。
covery.zen.minimum_master_nodes: 2
#指定集群中的节点中有几个有master资格的节点。对于大集群可以写3个以上。
discovery.zen.ping.timeout: 40s
#默认是3s,这是设置集群中自动发现其它节点时ping连接超时时间,为避免因为网络差而导致启动报错,我设成了40s。
discovery.zen.ping.multicast.enabled: false
#设置是否打开多播发现节点,默认是true。
network.bind_host: 192.168.137.100
#设置绑定的ip地址,这是我的master虚拟机的IP。
network.publish_host: 192.168.137.100
#设置其它节点和该节点交互的ip地址。
network.host: 192.168.137.100
#同时设置bind_host和publish_host上面两个参数。
discovery.zen.ping.unicast.hosts: [“192.168.137.100”, “192.168.137.101”,“192.168.137.100:9301”]
#discovery.zen.ping.unicast.hosts:[“节点1的 ip”,“节点2 的ip”,“节点3的ip”]
指明集群中其它可能为master的节点ip,以防es启动后发现不了集群中的其他节点。第一对引号里是node1,默认端口是9300。第二个是 node2 ,在另外一台机器上。第三个引号里是node3,因为它和node1在一台机器上,所以指定了9301端口。
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
(2) 进一步修改
拷贝 elasticsearch-node1 整个文件夹,两份,一份elasticsearch-node2,一份elasticsearch-node3.
将elasticsearch-node2 文件夹copy到另外一台IP为192.168.137.101的机器上。而在 192.168.137.100 机器上有 node1和node3.
对于node3: node3和node1在一台机器上,node1的配置文件里端口默认分别是9300和9200,所以要改一下node3配置文件里的端口,elasticsearch.yml 文件修改如下:
node.name: “es-node3”
transport.tcp.port: 9301
http.port: 9201
-
1
-
2
-
3
-
1
-
2
-
3
对于node2: 对 elasticsearch.yml 修改如下
node.name: “es-node2”
network.bind_host: 192.168.137.101
network.publish_host: 192.168.137.101
network.host: 192.168.137.101
-
1
-
2
-
3
-
4
-
1
-
2
-
3
-
4
注意:
1.对于单机多节点的es集群,一定要注意修改 transport.tcp.port 和http.port 的默认值保证节点间不冲突。
2. 出现找不到同一集群中的其他节点的情况,检查下 discovery.zen.ping.unicast.hosts 是否已设置。
二、运行 & 关闭 elasticsearch
1.运行elasticsearch :
编辑 /home/zkpk/elasticsearch-1.7.3/bin/elasticsearch.in.sh, 设置 ES_MIN_MEM和ES_MAX_MEM,确保二者数值一致,或者可以在启动es时指定,
[zkpk@master ~]$ cd ~/elasticsearch-node1/bin
[zkpk@master bin]$ ./elasticsearch -Xms512m -Xmx512m
-
1
-
2
-
1
-
2
若想让es后台运行,则
[zkpk@master bin]$ ./elasticsearch -d -Xms512m -Xmx512m
-
1
-
1
2.关闭elasticsearch:
前台运行:可以通过”CTRL+C”组合键来停止运行
后台运行,可以通过”kill -9 进程号”停止.也可以通过REST API接口:
curl -XPOST http://主机IP:9200/_cluster/nodes/_shutdown
-
1
-
1
来关闭整个集群,通过:
curl -XPOST http://主机IP:9200/_cluster/nodes/节点标示符(如es-node1)/_shutdown
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
-d -Xms512m -Xmx512m
-
1
-
1
2.关闭elasticsearch:
前台运行:可以通过”CTRL+C”组合键来停止运行
后台运行,可以通过”kill -9 进程号”停止.也可以通过REST API接口:
curl -XPOST http://主机IP:9200/_cluster/nodes/_shutdown
-
1
-
1
来关闭整个集群,通过:
curl -XPOST http://主机IP:9200/_cluster/nodes/节点标示符(如es-node1)/_shutdown
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-sckABHyq-1713125755487)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!