1、搜索引擎
elasticSearch5.0:使用root用户权限,一个数据库可以建立多张表
elasticSearch6.0:只能使用elasticSearch其他用户权限,一个数据库只能建立一张表
为何6.0更新了,反而权限降低了呢?在5.0版本中,是因为你用了root使用elasticSearch,有很多黑客可以透过elasticSearch获得root权限,操作的服务器,这样就非常不安全。姑且6.0版本就限制了用户的使用权限了。
2、文本搜索引擎(以空间换时间的算法)
在MySQL数据库中(除开主外键),其他所有东西都是文本。
MySQL是通过压缩格式(编码),正因为压缩存储,优点就是:
使用很小的空间存很大量的数据库
而es无论所有的东西都用文本格式存储,但是存储空间很要命,使用内存很大,优点是:
检索数据特别快,文本查文本,不用转换格式,所以查询比mysql、oracle这些数据库还快
es特别嚣张,低于2G的运行内存,它会嫌弃你服务器太慢了,启动报错!
同类产品:
Hermes(腾讯的)(更注重的是实现检测分析)
Solr配置集群的话,要依赖zookeeper
elasticSearch默认就是集群配置
Solr和elasticSearch都是基于Lucene(都是属于Apache家族的)
3、搜索引擎(以百度,goole为例)的工作原理是什么?
18年特朗普的秘书告了谷歌,为什么你们搜索引擎输入idiocy(白痴),显示的是特朗普的照片?
搜索引擎分很多块,人们关注的事情,人们关注的热词,雷达扫描等等。
只能说搜索idiocy出现特朗普照片和谷歌一点关系没有,只能说特朗普相对这个词比较符合在当时在大众心里的形象!最后没有告赢
比如百度,一个真正的搜索引擎后台的工作还很复杂很多。
目前做的这个谷粒商城主要是从查询方面入手。
(1)爬虫:扫描全网域的端口,抓取每个网页返回的http页面(上万TB存储)
(2)分析:大数据系统对这些上万上千TB的网页数据进行瞬间分析
(3)查询:把这些分析的结果(哪个热度更高、点击率高的页面)存到查询数据库系统中
4、传统的mysql、oracle数据库,根据用户输入的内容,查询数据库的时候,数据库是一条一条id(主键)数据去匹配,全表查询,一条一条对比,速度非常慢!
而现在使用elasticSearch的算法:
把文本内容拆成词、关键字。
倒排索引(在内容上建立索引,用内容去匹配索引)
即下图,当用户输入红海,相对应id为:1,3。再根据1,3瞬间查询返回结果。速度非常快!
5、Mysql的索引算法:多路平衡树(二叉树)
Btree(balance tree)平衡树,老外把它写成了b-tree,这个不是b减tree。别理解错了
1234567,mysql是根据下图的二叉树,这样建立。
如果输入3,要查询3,则:
开头进来,3比4小,去左边;3比2大,去右边。就查到了!!!
6、我们的elasticSearch使用的算法则是:B+tree(balance + tree)多路平衡树,b加tree
这个算法是二叉树(Btree)算法的进阶版,
由拼音,英文字母,数字,根据算法给你建立一颗树,创建内容索引。当用户输入关键词,这些词就会进去这个树进行匹配,可以很快速的返回结果给你。