02 2022 档案

摘要:一、工厂方法 1、工厂方法四要素:抽象工厂、具体工厂、抽象产品、具体产品 2、抽象工厂中定义抽象方法,这些方法是每个产品族都要实现的方法,返回类型为抽象对象 产品族:每个工厂要生产几个对象,这些对象为一个产品族 具体工厂为抽象工厂的实现,具体工厂继承抽象工厂的每一个方法,返回对应抽象产品(返回产品对 阅读全文
posted @ 2022-02-27 22:29 showMeTheCodes 阅读(84) 评论(0) 推荐(0) 编辑
摘要:一、发布订阅 场景一:(实时性) 直播间中会话,进入直播间之前的消息你是接收不到的,只能接收到进入直播间之后的消息 订阅者只能接收到连接发布者之后发布者发布的消息 场景二:(历史性) 登陆微信之后可以查看历史聊天记录,数据库中肯定存放全量的数据 但是不能全部查库,n天之前的可以查库(请求量特别低), 阅读全文
posted @ 2022-02-20 19:18 showMeTheCodes 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2022-02-16 21:20 showMeTheCodes 阅读(39) 评论(0) 推荐(0) 编辑
摘要:一、深度分页 假如要查10000-10100条数据,有5个分片。但是你不能保证这100条数据全部都在一个分片上 这时ES就会在每个分片上取出前10100条数据,共50500条数据。最后在这50500条数据中取出10000-10100的数据。 总结:先在每个分片中进行单次查询,之后再进行二次查询 二、 阅读全文
posted @ 2022-02-16 18:01 showMeTheCodes 阅读(58) 评论(0) 推荐(0) 编辑
摘要:一、Master选举 1、ping其他所有节点,收到回复的放到一个集合中(包括自己) 2、从集合中选所有具有候选角色的节点 3、从候选列表中选出master,按照版本号选举,版本号越大越优先 4、第3步当集群中有主节点时,已存在的主节点与新选出的主节点比较id,id最小的为主节点 二、脑裂 1、假设 阅读全文
posted @ 2022-02-16 17:03 showMeTheCodes 阅读(205) 评论(0) 推荐(0) 编辑
摘要:一、es容灾机制 二、选举过程中两个重要的角色 1、active master与master的区别 active master节点:主节点。主节点一般不作为数据节点,不进行复杂的数据处理业务 master角色:代表该节点为候选节点,候选节点一般也不作为数据节点,因为如果主节点宕机后候选节点会被升级为 阅读全文
posted @ 2022-02-16 14:29 showMeTheCodes 阅读(221) 评论(0) 推荐(0) 编辑
摘要:一、分片的创建策略 1、分片:数据的载体,类似mysql中表。 每一个分片承载了完整数据中的一部分,每一个分片都存在时,数据才是完整的 2、主分片是数据的一部分,副本分片是主分片的备份 3、7.0之后分片默认一主一副 4、分片的合理容量为10-50G 5、分片有shard reblance策略,体现 阅读全文
posted @ 2022-02-15 22:32 showMeTheCodes 阅读(200) 评论(0) 推荐(0) 编辑
摘要:一、单机服务和分布式 1、单机服务的问题:性能有限(吞吐量等)、可用性差(单机产生故障服务挂掉,不可用)、难以扩展 2、三高 二、分布式集群环境 1、自动发现:集群中节点之间通过9300端口通信,并发现彼此的存在 2、核心配置: cluster.name: 集群名称,唯一确定一个集群。 node.n 阅读全文
posted @ 2022-02-15 20:17 showMeTheCodes 阅读(133) 评论(0) 推荐(0) 编辑
摘要:一、嵌套查询 1、测试数据: 不手动设置索引类型,全部使用dynamic_mapping 1 PUT /order/_doc/1 2 { 3 "order_name": "扫地机器人订单", 4 "desc": "shouji zhong de zhandouji", 5 "goods_count" 阅读全文
posted @ 2022-02-14 16:12 showMeTheCodes 阅读(255) 评论(0) 推荐(0) 编辑
摘要:搜索推荐: 一、Completion Suggester(为主) Completion Suggester会被构建成FST对象,缓存在RAM中,查询速度会变快 1 #complate suggester 2 DELETE suggest_carinfo 3 PUT suggest_carinfo 4 阅读全文
posted @ 2022-02-14 11:57 showMeTheCodes 阅读(35) 评论(0) 推荐(0) 编辑
摘要:一、模糊查询 1、四种情况: 混淆字符(box->fox) 缺少字符(black->lack) 多出字符(sic->sick) 颠倒次序(act->cat) 2、使用fuzzy进行模糊查询: 1 GET product_en/_search 2 { 3 "query": { 4 "fuzzy": { 阅读全文
posted @ 2022-02-14 11:24 showMeTheCodes 阅读(346) 评论(0) 推荐(0) 编辑
摘要:一、前缀搜索 1、概念:以xx开头的搜索,前缀搜索不计算相关度评分 2、测试数据: 1 POST /my_index/_bulk?filter_path=items.*.error 2 {"index":{"_id":"1"}} 3 {"text":"城管打电话喊商贩去摆摊摊"} 4 {"index 阅读全文
posted @ 2022-02-14 08:24 showMeTheCodes 阅读(264) 评论(0) 推荐(0) 编辑
摘要:一、基于_mget的批量查询 1、批量查询指定id 1 GET product/_mget 2 { 3 "ids":[2,3] 4 } 2、查询指定id中某些字段 1 GET product/_mget 2 { 3 "docs": [ 4 { 5 "_id": 2, 6 "_source": [ 7 阅读全文
posted @ 2022-02-13 22:42 showMeTheCodes 阅读(159) 评论(0) 推荐(0) 编辑
摘要:一、脚本查询 1、概念:Scripting是es支持的一种专门用于复杂场景下支持自定义编程的强大的脚本功能 2、es5.0之后默认语言是painless 3、 1 #语法:ctx._source.<field-name> ctx可以理解为上下文 2 #将doc为2数据的price属性-1 3 POS 阅读全文
posted @ 2022-02-13 20:30 showMeTheCodes 阅读(256) 评论(0) 推荐(0) 编辑
摘要:一、histogram 1、histogram:直方图、柱状图 2、 1 GET product/_search 2 { 3 "size": 0, 4 "aggs": { 5 "price_histogram": { 6 "histogram": { 7 "field": "price", 8 "i 阅读全文
posted @ 2022-02-11 21:54 showMeTheCodes 阅读(139) 评论(0) 推荐(0) 编辑
摘要:一、基于查询结果的聚合 1、基于query的aggs 1 #价格大于4500的标签进行聚合 2 GET product/_search 3 { 4 "size": 10, 5 "query": { 6 "range": { 7 "price": { 8 "gte": 4500 9 } 10 } 11 阅读全文
posted @ 2022-02-11 18:17 showMeTheCodes 阅读(79) 评论(0) 推荐(0) 编辑
摘要:一、分桶聚合 1、分桶聚合:根据属性进行分桶,把具有某些相同属性的数据放到一起,相当于mysql的group by 举例:JD商城2021年手机销售量,如果采用分桶聚合。可以按照:小米、华为、苹果、其他等品牌进行聚合 2、 1 #统计不同标签的商品数量 2 GET product/_search 3 阅读全文
posted @ 2022-02-11 16:04 showMeTheCodes 阅读(589) 评论(0) 推荐(0) 编辑
摘要:一、自定义分词器 1 #自定义分词器 2 PUT cunstom_analysis 3 { 4 "settings": { 5 "analysis": { 6 "char_filter": { 7 "my_char_filter":{ 字符过滤器,在切词时将指定词语进行替换 8 "type":"ma 阅读全文
posted @ 2022-02-11 09:56 showMeTheCodes 阅读(239) 评论(0) 推荐(0) 编辑
摘要:一、normalization normalization:规范化。在切词之后,包括大小写的转换、去掉语气词停用词(is、an)、单复数的变化 每种分词器的normalization策略不一样,如下图展示 二、char filter char filter:字符过滤器,在切词之前完成操作 1、HTM 阅读全文
posted @ 2022-02-11 07:43 showMeTheCodes 阅读(28) 评论(0) 推荐(0) 编辑
摘要:一、元数据 1、从索引中查询出的结果可以称之为元数据,如下图 2、可以禁止元数据的展示(一般不使用) 使用如下代码查询后,元数据将不再展示 1 GET product/_search 2 { 3 "_source": false, 4 "query": { 5 "match_all": {} 6 } 阅读全文
posted @ 2022-02-10 16:16 showMeTheCodes 阅读(971) 评论(0) 推荐(0) 编辑
摘要:一、概念 ES中的mapping类似于数据库中的表结构。mapping中包含字段名称、类型、字段使用的分词器、是否评分、是否创建索引等属性 二、查看mapping GET index/_mapping 三、常用数据类型 数字类型:long、integer、short、byte、double、floa 阅读全文
posted @ 2022-02-09 17:47 showMeTheCodes 阅读(391) 评论(0) 推荐(0) 编辑
摘要:C 1 #创建索引 2 PUT product 3 #插入数据 4 PUT product/_doc/1 5 { 6 "name": "lyc", 7 "age": 25 8 } R 1 #查询所有索引 2 GET _cat/indices?v 3 #查询指定索引的数据信息 4 GET produc 阅读全文
posted @ 2022-02-09 15:34 showMeTheCodes 阅读(36) 评论(0) 推荐(0) 编辑
摘要:一、集群 1、每个节点就是一个ElasticSearch的实例(在linux中每执行一个es启动,就代表有一个节点启动) 2、集群健康值状态: green:所有主分片和副本分片都健康 yellow:至少有一个副本分片不可用,此时数据是完整的 red:至少有一个主分片不可用 3、健康值检查:_cat/ 阅读全文
posted @ 2022-02-09 14:53 showMeTheCodes 阅读(130) 评论(0) 推荐(0) 编辑
摘要:一、前缀树原理 依次输入:msb、msn、msbtech、wltech会产生如上图数据结构 1、如果出现可以公用的元素,则另开分支将不可以公用的部分进行存储,最后一个节点标记为绿色 2、在查找时按照从头到尾的顺序进行查找,只有每个节点都符合并且最后一个字母为绿色final节点时代表查询成功 3、若没 阅读全文
posted @ 2022-02-09 08:25 showMeTheCodes 阅读(799) 评论(0) 推荐(0) 编辑
摘要:一、为什么有了FOR压缩算法后还要使用RBM压缩算法 FOR压缩算法适用于间隔比较小的倒排表id,如1,2,3,5,8.......。间隔较小的数字在进行间隔相减的时候得出的结果也会比较小,这时在使用FOR压缩算法的时候能有效控制存储空间。 但是,假如遇到间隔较大的倒排表id,如1000,62101 阅读全文
posted @ 2022-02-08 18:57 showMeTheCodes 阅读(265) 评论(0) 推荐(0) 编辑
摘要:一、倒排索引的数据结构 倒排表的压缩算法:FOR、RBM 词项索引的检索原理:FST 二、FOR压缩算法 如上图,假设倒排表中最理想的一行id为1,2,3......100 W个连续数字 图Ⅰ:若没有使用FOR压缩算法,则有100W个int类型的数字,1数字=4字节,则有400W字节,约占4M存储空 阅读全文
posted @ 2022-02-08 16:27 showMeTheCodes 阅读(469) 评论(0) 推荐(0) 编辑
摘要:一、什么是搜索引擎 全文搜索引擎:如谷歌、百度、搜狗 垂直搜索引擎:有明确搜索目的搜索行为。各大电商网站、站内搜索、视频网站等 ES不等于搜索引擎,es除了搜索引擎功能之外还有聚合分析、大数据存储的功能 ES是一个分布式的查询、分析、存储引擎 二、mysql索引能解决大数据检索的问题吗? 1、索引往 阅读全文
posted @ 2022-02-08 08:27 showMeTheCodes 阅读(87) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示