搜索引擎 - ES
ES集群有哪些类型的节点,以及节点对应的职责是什么?
主要有Master节点和DataNode节点。
ES文档写入原理?
ES检索原理?
什么是倒排索引? 有什么好处?
索引: 从ID到内容。
倒排索引: 从内容到ID。好处: 比较适合做关键字检索。可以控制数据的总量。提高查询效率。
搜索引擎为什么比MySQL查询快? lucence
文章-》term ->排序 term dictionary -> term index -》 Posting List ->[文章D ,[在文章中出现的偏移量],权重,
相关度算法:TF/IDF.
强平衡二叉树和弱平衡二叉树有什么区别
强平衡二叉树AVL树,弱平衡二叉树就是我们说的红黑树.
1.AVL树比红黑树对于平衡的程度更加严格,在相同节点的情况下,AVL树的高度低于红黑树
2.红黑树中增加了一个节点颜色的概念
3.AVL树的旋转操作比红黑树的旋转操作更耗时.
二又搜索树和平衡二叉树有什么关系?
平衡二叉树也叫做平衡二叉搜案树,是二叉搜案树的升级版,二又搜索树是指节点左边的所有节点都比该节点小,节点右的节点都此该节点大,而平二又搜索树是在二叉搜索的基础上还规定了节点左右两边的子树高度差的绝对值不能超过1.
设计模式有哪些大类,及熟悉其中哪些设计模式
设计模式分为三大类:
1.创建型
a.工厂横式(Factory Pattern)
b.抽象工厂模式(Abstract Factory Pattern)
c单例模式(Singleton Pattern)
d.建造者模式(Builder Pattern)
e.原型模式(Prototype Pattern)
2.结构型
a.适配器模式(Adapter Pattern)
b.桥接模式(Bridge Pattern)
c过滤器模式 (Filter、Criteria Pattern)
d.组合模式(Composite Pattern)
e.装饰器模式(Decorator Pattern)
f.外观模式(Facade Pattern)
g.享元模式(Flyweight Pattern)
h.代理模式(Proxy Pattern)
3.行为型
a.责任链模式(Chain of Responsibility Pattern)
b.命令模式(Command Pattern)
c解释器模式(nterpreter Pattern)
d.迭代器模式(lterator Pattern)
e.中介者模式(Mediator Pattern)
f.备忘录模式(Memento Pattern)
g.观察者模式(Observer Pattern)
h.状态模式(State Pattern)
i.空对象模式(Null Object Pattern)
j.策略模式(Strategy Pattern)
k.模板模式(Template Pattern)
l访问者模式(Visitor Pattern)
遇到过哪些设计模式?
在学习一些框架或中间件的底层源码的时候遇到过一些设计模式:
1.代理模式:Mybatis中用到D动态理来生成Mapper的代理对象,在执行代理对象的方法时会去执SQL,Spring中AOP、包括@oniguration注解的底层实现也都用到了代理模式
2.责任链模式:Tomcat中的Pipeline实现,以及Dubbo中的Filter机制都使用了责任链模式
3.工厂模式:Spring中的BeanFactory就是一种工厂模式的实现
4.适配器模式:Spring中的Bean销毁的生命周期中用到了适配器模式,用来适配各种Bean销毁逻辑的执行方式
5.外观模式:Tomcat中的Request和RequestFacade之间体现的就是外观模式
6.模板方法模式: Spring中的refresh方法中就提供了给子类继承重写的方法,就用到了模板方法模式
ES部署时,要如何进行优化?
1、集群部署优化。
调整ES的一些重要参数。path.data目录尽量使用SSD。定时JVM堆内存大小。
关于ES的参数,大部分情况下是不需要调优的,如果有性能问题,最好的办法是安排更合理的sharding布局并且增加节点数量。
2、更合理的sharding布局
让sharding和对应的replica sharding尽量在同一个机房。
3、Linux服务器上的一些优化策略:
不要用root用户;修改虚拟内存大小; 修改普通用户可以创建的最大线程数
ES生态:ELK日志收集解决方案- filebeat(读log日志)-> logstash -> ElasticSearch -> kibana、 Grafana、自研的报表平台.
ES了解多少? 说说你们公司的ES集群架构。
ES: 是一个基于Lucene框架的搜索引擎产品。you know for search。提供了Restful风格的操作接口。ELK
Lucene: 是一个非常高效的全文检索引擎框架。javajar
ES的一些核心概念:
1、索引index :关系型数据库中的 table
2、文档 document : row
3、字段 field text keyword byte :列
4、映射Mapping : Schema。
5、查询方式 DSL :SQL ES的新版本也支持SQL
6、分片 sharding 和 副本 replicas: index都是由sharding组成的。每个sharding都有一个或多个备份。 ES集群健康状.
match查询?
match查询属于高层查询,会根据你查询的字段的类型不一致,采用不同的查询方式.
如果查询的是日期或者数值的字段,他会自动将你的字符串查询内容转换成日期或者数值对待.
如果查询的内容是一个不能被分词的字段(keyword).match查询不会对你的指定查询关键字进行分词;
如果查询的内容是一个可以分词的字段(text),match会将你指定的查询内容根据一定的方式去分词;
然后去分词库中匹配指定的内容
总而言之: match查询,实际底层就是多个term查询,将多个term查询的结果汇集到一起返回给你。
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· c# 半导体/led行业 晶圆片WaferMap实现 map图实现入门篇
2021-03-05 Dubbo & Zookeeper
2020-03-05 Spring Data JPA 与 MyBatis对比
2020-03-05 markdown下载、安装、破解、汉化与常用语法