seo教程:搜索引擎优化入门与进阶(第3版)(本文目录为什么要写ElasticSearch终极教程?目录在文尾)
优采云 发布时间: 2021-08-29 06:12seo教程:搜索引擎优化入门与进阶(第3版)(本文目录为什么要写ElasticSearch终极教程?目录在文尾)
注:本文内容在文章开头,整个课程内容在文章结尾。整个教程我不会收费,希望能帮到你。
为什么要在本文的内容中编写终极 ElasticSearch 教程
如果将浩瀚的计算机世界粗略地划分为武侠世界这样的内功和外功,那么显然,“数据结构与算法”、“计算机网络”、“数据库系统”等都可以归为博大精深内功;而“Android程序开发”和“iOS进阶”都是聪明的外在技能。
那么,Elastic Search 应该放在哪里?
在我看来,Elastic Search 应该介于内部和*敏*感*词*和常用的弹性搜索。设置和常见陷阱。
/static/bd8a8da54225f083980de3a02cc3bd2b/066f9/panda-kong-fu.jpg 400w,
/static/bd8a8da54225f083980de3a02cc3bd2b/4b190/panda-kong-fu.jpg 800w,
/static/bd8a8da54225f083980de3a02cc3bd2b/bba1f/panda-kong-fu.jpg 840w" />
ElasticSearch 介于内部和外部电源之间
但遗憾的是,世界上大部分教程都停留在毛皮级别,甚至连*敏*感*词*都没有计算在内。通常这些 Elastic Search 教程以设置 Elastic 开始,以索引和搜索文档结束,根本不谈原理和原因。结果,让人一头雾水,为什么一种现象是这样,另一种现象又是那样,稍有变化,完全糊涂了。
这样学习的好处是感觉非常“快”:感觉大概一两天就可以使用Elastic Search了。缺点是容易遇到问题,找不到,复杂的问题不容易找到解决方案。
再举个类似的例子,就好比学了一两天车,直接扔到京藏高速上。循序渐进的直线行驶可能还好,但是一旦上了黄土高坡山路的第十八弯,就可能会晕倒。更可怕的是,如果车中途抛锚,千万不要开车。
我写了这个教程,希望从原理入手,帮助对Elastic Search感兴趣的朋友。当然,我并不完美。我所有的知识都来自本科和*敏*感*词*教育以及工作中的一些积累(请参阅下文,了解为什么我认为我可以编写本教程),同时来自 Elastic Search/Lucene 的文档和代码本身。
我相信没有人一开始是完美的,会犯错误,所以我计划不断更新本教程和相应的github代码库,以尽量减少可能的错误。但最大的错误应该是想多了,没有开始,所以我决定从现在开始写作。
我是谁以及我为什么写这个教程
我是工程师,当然这只是一个工作身份标签;我也是一个开源爱好者、读者和作者,最后我是一个企业家。
我与搜索的联系
众所周知,Elastic Search的主要应用场景是构建搜索服务,我的经验和Elastic Search有很大关系。
2010年在清华人工智能实验室实习的时候,我的毕业项目是和搜索相关的,同时用到了Elastic Search-Lucene的核心(ES当时没有出现)因为我做了毕业设计,符合美国某教授的研究方向,因此获得了美国留学的机会。我的*敏*感*词*导师在雅虎最漂亮的时候做了一个图片搜索。那时,他在湾区的一家大工厂遇到了我的老板。我的导师把我推荐给了我的老板,所以我得到了在这个大工厂的搜索团队工作的机会。
最后我也做了一个比Elastic Search-Kara搜索更好的搜索工具。虽然从现在开始,Cara 和 Elastic Search 相比,我们只是一只可爱的小蚂蚁 :)
当然,因为ES山在那里,既是压力也是动力。特别是因为ES是开源的,而且协议允许,所以在写Kara的时候,借鉴了很多ES的想法,比如
等等。因此,我不仅有理论训练(当然,我的造诣是另一回事),而且我也有一些实践经验。我不接受这样一个事实,即我的这些经历会随着时间的推移而无缘无故地消失。
我喜欢阅读和写作
我知道测试你是否真正理解一个概念的最简单方法是尝试教别人。在知乎我写了几篇仍然流行的文章,比如
发完这些文章后,竟然收到了很多反馈。广大读者表达了感激之情,同时也结识了很多朋友,成为线上线下的朋友。非常感谢我读过的所有好书的作者,也希望我能像他们一样写下并传递我的经验。
我仍然是一名企业家
除了标签程序员,我心里还是个创业者。
我对数千万融资、光鲜亮丽的办公室、达到人生巅峰的兴趣很淡,但我对创造工具和创造数百万人使用的产品非常感兴趣。
或许Kara也是这样的尝试。即使我无法达到 Elastic Search 的规模,也有少数用户觉得 Kara 好用,这是我很高兴的事情。孙子说,知己知彼,永不放手。如果连Elastic Search的优缺点都不知道,我也不知道作为Kara该往哪个方向发展。
正是因为这个,促使我在开始写Kara之前阅读了部分Elastic Search代码。在 Twitter 上搜索时,虽然没有使用 Elastic Search,但我们也制作了自己的搜索框架。
Lucene自己创业的想法,我会在我的公众号中讨论更多,重点是技术和商业。如果你对我的创业经历或者Kara的成长过程感兴趣,请关注我的公众号(HiXieke)
教程大纲
我的计划是先总结本教程的一部分,然后根据反馈继续改进。
本教程将从实践出发,通过例子总结一些规则,然后详细说说搜索引擎的实现原理。从我自己的学习来看,边做边学,往往学得最快最扎实。
同时需要注意的是,我无法兼顾 Elastic Search 的方方面面。在本教程中,我不会处理以下内容
相反,我将始终围绕以下主题进行教学:
如何使用 Elastic Search 构建全文搜索应用(全文搜索)
原因是这可能是 Elastic Search 最重要的应用,而且它也与大多数应用场景挂钩,是其他应用场景(如日志分析等)的基础。如果你已经熟练掌握了 Elastic Search 在全文搜索中的应用,并且有比较扎实的搜索基础,那么使用 Elastic 作为日志分析处理工具应该没有问题。
使用 Elastic Search 构建全文索引通常也称为“数据库搜索”。大多数现代关系型数据库都没有将处理文本搜索作为其核心功能,因此在日常应用中通常需要将 Elastic Search 与 Postgres 和 MySQL 等数据库结合使用。
Elastic Search全文搜索的核心是Lucene,所以我也会详细介绍一下Lucene的搜索技术。但是不要被这些话吓到。我将从基本概念开始,谈谈Lucene引擎的关键部分。然后我们将构建一个电影搜索引擎作为课程示例。
课程的先决条件
我会确保所有的教程在去掉专有名词后,再告诉我妈妈,她一定能听懂。
但这里我们假设您已经可以用任何语言编写一些代码。此外,您需要有一台已经连接到 Internet 的计算机(Mac、Windows 或 Linux)。此外,本课程没有任何先决条件。
我特意把每一章的每一节都控制得比较短,这样可以利用空闲时间来写(毕竟要上班),也方便读者打发比较分散的时间阅读。我会不断更新课程并将它们放在这里。