数据库-Elasticsearch进阶学习笔记(分片、映射、分词器、即时搜索、全文搜索等(1)

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

😝朋友们如果有需要的话,可以联系领取~

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

2️⃣视频配套工具&国内外网安书籍、文档
① 工具

② 视频

image1

③ 书籍

image2

资源较为敏感,未展示全面,需要的最下面获取

在这里插入图片描述在这里插入图片描述

② 简历模板

在这里插入图片描述

因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆

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

需要这份系统化资料的朋友,可以点击这里获取

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

  • Range:
    • integer_range:32位有字符整数,-231 ~ 231-1
    • long_range:64位有符号整数
    • double_range:64位IEEE754类型浮点数
    • date_range:日期,可以使用format自定义格式
    • ip_range:ipv4和ipv6均支持
  • Text:
    • text:全文,一般是会进行分析和分析,邮件正文,商品描述等
    • match_only_text:空间优化,禁用评分,适合日志消息。

文档(document)

  • _index:文档存放在的索引
  • _type:文档表示的对象类别,之前与关系型数据库的table对应,现在不再强调这个
  • _id:文档唯一标识
  • _version:版本,更新文档时,该字段会改变
  • _source:数据

领域特定语言 (DSL)

使用 JSON 构造了一个请求。包含了filter range过滤器。

分词器

在全文检索情况下,对text等类型分词,方便建立倒排索引。常见的分词器有

  • ik分词器
  • icu分词器
  • smartcn分词器
  • pinyin分词器
    更多分词器见参考,es官方github上有一些。腾讯云可支持大部分插件,点击ES集群->插件列表。如下图所示。
得分排序

按照相关性得分排序,一般使用TF-IDF算法(见参考,本文主要还是在ES实践方面,算法不赘述),通过_score返回得分

后台执行的操作

  • 分配文档到不同的容器 或 分片 中,文档可以储存在一个或多个节点中
  • 按集群节点来均衡分配这些分片,从而对索引和搜索过程进行负载均衡
  • 复制每个分片以支持数据冗余,从而防止硬件故障导致的数据丢失
  • 将集群中任一节点的请求路由到存有相关数据的节点
  • 集群扩容时无缝整合新节点,重新分配分片以便从离群节点恢复

深入搜索(实践)

ES,you know, for search, 搜索才是重点!!!

数据添加

索引heros,字段及类型如下:

  • name:keyword
  • age:byte
  • role:keyword
  • birthday:date
  • mail:text
  • hobby:text
  • sentence:text
    数据如下:
nameagerolebirthdaymailhobbysentence
大乔18辅助2003-11-10daqiao@163.com写诗 画画诗是自由的载体
小乔19法师2002-01-20xiaoqiao@sina.com画画 唱歌Whenever you need me, I’ll be here.
孙策25坦克1996-11-10sunce@163.com画画 唱歌我向往诗和远方,也不会忘记她和故乡
周瑜23法师1998-01-20zhouyu@sina.com写诗 画画Whenever you are in trouble,I’m always near.
刘备30打野1991-10-20liubei@qq.com兵法 武器Shi wo bu tai dong
孙尚香26射手1995-10-20兵法 化妆詩我不太懂
创建索引及文档
PUT /heros

这里使用的Kibana的DevTools,如果你看了ES系列第一篇文章,有白嫖腾讯云的ES集群,可以点击可视化配置,给Kibana配置公网白名单即可,由于我前面的文章还没有介绍Kibana的使用,你可以继续使用Postman、curl或elasticsearch-head插件来发起请求。
在这里插入图片描述
查看setting和mapping情况

GET /heros?pretty

在这里插入图片描述
添加一个文档

POST /heros/_doc/1001
{
  "name":"大乔",
  "age":18,
  "role":"辅助",
  "birthday":"2003-11-10",
  "mail":"daqiao@163.com",
  "hobby":"写诗 画画",
  "sentence":"诗是自由的载体"
}

结果如下
在这里插入图片描述
再次查询mapping
在这里插入图片描述
可以看到ES自动添加了类型,但是与我们要求的不符合。有些不会自动分词,无法进行后序的搜索。
删除索引,再次添加

PUT /heros
{
  "settings": {
    "number\_of\_shards": 1,
    "number\_of\_replicas": 1
  },
  "mappings": {
    "properties": {
      "name":{
        "type": "keyword"
      },
      "age":{
        "type": "byte"
      },
      "role":{
        "type": "keyword"
      },
      "mail":{
        "type":"text"
      },
      "birthday":{
        "type":"date"
      },
      "hobby":{
        "type": "text"
      },
      "sentence":{
        "type":"text"
      }
    }
  }
}

在这里插入图片描述
之后添加文档,其他英雄的放在附录了,最终的索引应该如下图所示:
在这里插入图片描述

结构化搜索

结构化搜索(Structured search) 是指有关探询那些具有内在结构数据的过程。比如日期、时间和数字都是结构化的:它们有精确的格式,我们可以对这些格式进行逻辑操作。
在结构化查询中,要么存于集合之中,要么存在集合之外。结构化查询不关心文件的相关度或评分;它简单的对文档包括或排除处理。

单一过滤器(term)

我们首先来看最为常用的 term 查询, 可以用它处理数字(numbers)、布尔值(Booleans)、日期(date)等。
注意:ES5.0后,已经没有string类型了
警告:尽量不要用于text类型字段

查询角色是“法师”的英雄

GET /heros/_search
{
  "query":{
      "term":{
        "role":"法师"
      }
  }
}

结果如下图所示
在这里插入图片描述
多个精确值terms

查询角色是“法师”或“射手”的英雄

GET /heros/_search
{
  "query":{
      "terms":{
        "role":["法师","射手"]
      }
  }
}

结果如图所示
在这里插入图片描述
可以看到,多了射手角色的英雄。

范围过滤器(range)
{
	"range":{
		"field\_name":{
		},
	}
}

对字段进行范围过滤,常用的如下

  • gt: > 大于(greater than)
  • lt: < 小于(less than)
  • gte: >= 大于或等于(greater than or equal to)
  • lte: <= 小于或等于(less than or equal to)

查询19<=age<25的英雄

GET /heros/_search
{
  "query": {
    "range":{
      "age":{
        "gte":19,
        "lt":25
      }
    }
  }
}

结果如下图所示
在这里插入图片描述

组合过滤器(bool过滤器)

将多个过滤器进行组组合

{
   "bool" : {
      "must" :     [],
      "must\_not" : [],
      "should" :   [],
      "filter":[],
   }
}

  • must:所有语句必须匹配,相当于and
  • must_not:所有语句不能匹配,相当于not
  • should:至少有一个语句匹配,相当于or

查询角色是法师或辅助,年龄必须小于20,邮箱不能是新浪邮箱的英雄

GET /heros/_search
{
  "query": {
    "bool": {
      "must": {
        "range":{
          "age":{
            "lt":20
          }
        }
      },
      "must\_not":
        {
          "match":{"mail":"@sina.com"}
        },
        "should": [
          {
            "term": {"role": "法师"}
          },
          {
            "term":{"role":"辅助"}
          }
        ]
    }
  }
}

看前面的数据可以发现,就剩大乔了,结果如下图所示
在这里插入图片描述

NULL值处理(exists)

查询有邮箱的英雄

GET /heros/_search
{
  "query": {
    "exists": {
      "field": "mail"
    }
  }
}

结果如下图所示
在这里插入图片描述
那么,如何查询不存在邮箱的英雄呢?之前有missing,现在不支持了,可以使用must_not进行嵌套

GET /heros/_search
{
  "query": {
    "bool": {
      "must\_not": {
        "exists":{
          "field": "mail"
        }
      }
    }
  }
}

结果如下图所示
在这里插入图片描述

全文搜索

基于词项与基于全文

如 term 或 fuzzy 这样的底层查询不需要分析阶段,它们对单个词项进行操作。
像 match 或 query_string 这样的查询是高层查询,它们了解字段映射的信息

匹配搜索(match)与操作符(operator)

查询sentence中含诗的英雄

GET /heros/_search
{
  "query": {
    "match": {
      "sentence": "诗"
    }
  }
}

结果如下图所示
在这里插入图片描述
可以看到,评分语句更短的评分更高
多词搜索情况下
查询sentence中含“我 诗”的英雄

GET /heros/_search
{
  "query": {
    "match": {
      "sentence": "我 诗"
    }
  }
}

结果如下图所示
在这里插入图片描述
可以看到有些只包含我或诗的内容也出来了,虽然排名落后,如何做到呢,前面使用了must,这里使用operator实现

GET /heros/_search
{
  "query": {
    "match": {
      "sentence": {
        "query": "我 诗",
        "operator": "and"
      }
    }
  }
}

结果如下图所示
在这里插入图片描述

权重提升(boost)

查询sentence中必须包含"Whenever",有"in"或者"be"的英雄

GET /heros/_search
{
    "query": {
        "bool": {
            "must": [
              {"match": {
                "sentence": "Whenever"
              }}
            ], 
            "should": [ 
                { "match": { "sentence": "in" }
                },
                { "match": { "sentence": "be"        }}
            ]
        }
    }
}

结果如下图所示
在这里插入图片描述
现要求含in的权重更高,也就是提高_score来提高搜索排名
boost默认为1,通过增加in的boost来提高in的排名

GET /heros/_search
{
    "query": {
        "bool": {
            "must": [
              {"match": {
                "sentence": "Whenever"
              }}
            ], 
            "should": [ 
                { "match": {
                  "sentence": {
                    "query": "in",
                    "boost": 2
                  }
                }
                },
                { "match": { "sentence": "be"        }}
            ]
        }
    }
}

结果如下图所示
在这里插入图片描述

多字段搜索

前面已经进行了简单的多字符串搜索,不过,还有一些多字段时复杂的搜索情况。

最佳字段查询(dis_max与tie_breaker)

查询爱好有诗,sentence(随便起的名字,可以理解为个性签名或一句话介绍)中有诗或她的英雄

GET /heros/_search
{
    "query": {
        "bool": {
            "should": [
                { "match": { "hobby": "诗" }},
                { "match": { "sentence":  "诗 她" }}
            ]
        }
    }
}

结果如下图所示
在这里插入图片描述
可以看到,第二个结果是我们更想得到的。bool会打两次分,再除以语句总数2,第一个结果hobby和sentence都有诗,导致第一个结果就靠前了,由于hobby和sentence的竞争关系,所以需要找到最佳匹配字段。
使用dis_max来得到想要的结果

GET /heros/_search
{
    "query": {
        "dis\_max": {
            "queries": [
                { "match": { "hobby": "诗" }},
                { "match": { "sentence":  "诗 她" }}
            ]
        }
    }
}

结果如下图所示
在这里插入图片描述
tips:想要在bool和dis_max之间,可以使用tie_breaker参数,请读者自行深入了解。

多字段进行相同搜索(multi_match)

查询hobby或sentence中含诗的英雄,也就是对hobby sentence做同一搜索,如果写多个match会比较繁琐,可以采用multi_match,字段使用列表的方式填写多个即可。

GET /heros/_search
{
    "query": {


### 一、网安学习成长路线图


网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/aa7be04dc8684d7ea43acc0151aebbf1.png)


### 二、网安视频合集


观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f0aeee2eec7a48f4ad7d083932cb095d.png)


### 三、精品网安学习书籍


当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/078ea1d4cda342f496f9276a4cda5fcf.png)


### 四、网络安全源码合集+工具包


光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e54c0bac8f3049928b488dc1e5080fc5.png)


### 五、网络安全面试题


最后就是大家最关心的网络安全面试题板块  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/15c1192cad414044b4dd41f3df44433d.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/b07abbfab1fd4edc800d7db3eabb956e.png)  



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

**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值