我们在前面的(一)-(八)介绍了一下elasticsearch的基础信息,同时根据前面的介绍,大部分人员对于在项目中使用elasticsearch已经如鱼得水了。但是我们只是够用而已,elasticsearch的很多知识点我们还是没有太多的了解,那么出现问题如何解决,是不是只能百度一下。作为一个高级工程师,我们还是要对elasticsearch多了解一下。今天这篇文章我们就来介绍下elasticsearch的整体学习路线。
一、搜索引擎的认知
1、需要了解下搜索引擎是什么?
2、需要了解下什么是倒排索引,什么是正排索引
3、需要了解下搜索相关性的算法模型有哪些?
4、需要了解下中文分词,包括:中文分词的原理,开源的中文分词工具有哪些?(ik,ansj,结巴分词等)
5、需要了解检索质量的评价标准,即打分的原理。
二、elasticsearch的认知
1、需要了解elasticsearch是什么?
2、需要了解elasticsearch能干什么
3、需要了解elasticsearch和lucene、solr的不同点有什么?
4、需要了解elasticsearch的核心优势是什么?
5、需要进行下实战,包括elasticsearch的单机安装,集群安装,低版本升级,简单的curd。
三、elasticsearch基础概念的认知
1、需要了解什么是集群
2、需要了解什么是节点
3、需要了解什么是分片
4、需要了解什么是副本
5、需要了解什么是索引
6、需要了解什么是类型
7、需要了解什么是文档
8、需要了解什么是路由
9、需要了解什么是id序列
10、需要了解什么是mapping映射(包括动态映射和静态映射)
11、需要了解什么是mapping模板
四、elasticsearch基础类型的认知
1、string类型:keyword、text
2、数据类型:long、integer、short、byte、double、float、half_float、scaled_float
3、时间类型:date
4、布尔类型:boolean
5、二进制类型:binary
6、区间类型:integer_range,float_range,long_range,double_range,date_range
7、数组类型:array
8、对象类型:object
9、nested类型:nested
10、GEO地理位置类型:geo_point,geo_shape
11、ip类型:ip
12、自动补全类型:completion
13、string长度类型:tocken_count
14、percolate类型:mumur3
15、父子索引join类型:percolator
16、别名类型:alias
五、elasticsearch的基本检索类型
5.1、检索和过滤
1、检索和过滤的区别 2、检索和过滤的使用场景
5.2、结构化检索
1、精确匹配检索(term query) 2、范围匹配检索(range query) 3、存在与否检索(exist query) 4、前缀检索(prefix query) 5、通配符模糊检索(wildcard_query) 6、正则检索(regexp query) 7、类型检索(type query) 8、id检索(ids query) 9、模糊检索(fuzzy query)
5.3、全文检索
1、分词全文检索(match query) 2、短语检索(match_phrase query) 3、短语前缀检索(match_phrase_prefix query) 4、多字段匹配检索(multi_match query) 5、支持与或非的字符串检索(query_string query) 6、简化的字符串检索(simple_query_string query)
5.4、复合检索
1、固定得分检索(自定义boost) 2、bool组合检索(must/should/must_not query) 3、更改评分检索(dis max query / function score query / boosting query)
5.5、特定检索
1、父子文档检索(Nested query) 2、Geo 地址位置检索 3、相似文章检索(more like this) 4、脚本检索(script)
六、elasticsearch基本聚合类型的认知
6.1、metric聚合
1、cardinality去重 2、avg聚合 3、max聚合 4、min聚合 5、sum聚合 等等
6.2、buckting聚合
1、terms分组聚合 2、立方图Histogram聚合 3、时间区间段聚合Data histogram聚合 4、过滤filter聚合 5、父子关系聚合,Nested聚合 等等
6.3、pipeline聚合
1、bucket script聚合 2、bucket selector聚合 3、bucket sort聚合 4、max/min/avg、Sum bucket聚合 等等
七、elasticsearch集群的基本操作认知
7.1、集群状态有哪些?
green yellow red health api
7.2、集群状态监控
集群状态:state 集群统计:stats 集群任务管理:_tasks 节点信息:_nodes 活跃线程信息:_nodes/hot_threads
7.3、集群备份
_snapshot _restore
八、elasticsearch索引的基本操作认知
8.1、增
put index
8.2、删
delete index
8.3、改
索引迁移: reindex 修改副本数 索引压缩:shrink
8.4、查
get index
九、elasticsearch文档的基本操作认知
9.1、增
单文档写入:put document 多文档写入:bulk写入 第三方导入:见各文档提供的文档
9.2、删
单个删除:delete document 批量删除:delete by query
9.3、修改
单个修改:update document 批量修改:update by query
9.4、查
单个检索:query by id 批量检索:query builder 分页检索:from+size,scrollid
9.5、高亮查询
unified Highlighter(默认的) plain Highlighter Fvh Highlighter(适合大文件)
9.6、推荐
term suggester phrase suggester completion suggester comtext suggester
9.7、分词
中文分词 英文分词 开源分词器插件 动态字典
十、elasticsearch常用的搭配工具认知
kibana工具 head浏览器插件 cerebro监控工具
十一、elasticsearch集群规划认知
elasticsearch节点数规划(master节点,client节点,data节点) elasticsearch分片/副本数规划(每个分片支持多少数据量) elasticsearch堆内存分配(一般为机器内存的一半左右,最大最小值一致) elasticsearch部署优化(堆内存优化,线程数,队列优化,分词等)
十二、elasticsearch数据建模的认知
elasticsearch如何建模 elasticsearch建模流程
十三、elasticsearch生命周期
基于时间轴的动态索引创建(template和rollover) 定期清理索引 elasticsearch的冷热数据分离
十四、elasticsearch的写入性能优化
14.1、elasticsearch写入为什么这么慢?
没有批量操作? 创建的mapping结构不准确 队列线程池设置不合理?
14.2、elasticsearch写入慢的提速方法
逐步调大批量请求书 增加刷新时间间隔 写入前关闭副本 禁用或者增大refresh 尽量使用自动生成的id
十五、elasticsearch的查询性能优化
15.1、elasticsearch查询为什么这么慢?
索引设置不合理?(mapping设置不合理) DSL设置不合理,例如使用了模糊查询 返回字段太多 慢查询日志 集群状态监控
15.2、elasticsearch查询慢的提速方法
profile分析查询慢的根本原因 硬件层面的提升 数据层面的提升(提前数据建模,减少检索字段,mapping优化等) 利用缓存
以上就是几乎能覆盖elasticsearch总体情况98%的知识面,整个的学习路线可以挨个进行。
还没有评论,来说两句吧...