什么是ElasticSearch?
啥是ElasticSearch?
问这个问题前,我们可以问一些别的问题:
说一首提到月亮的古诗词。
额,这个时候,确实哈,这样突然一问,脑瓜子嗡嗡的,离离原上草,一睡一枯荣?
不不不,这不是挨个背吗?谁背课文的时候会记住这首古诗和月亮有关系?
这不都是老师经常这样问吗:来,王同学,你给背一下李白的《草》。
这个时候,头脑风暴,算法启动:李白的《草》,脱口而出:离离原上草,一睡一枯荣
那么换一种思维:
草à《草》
月亮à《静夜思》
我们可以将(举头望明月,低头思故乡)作为key,(静夜思)作为value。因为我们需要找到的是静夜思。
这样的话,我们就形成了一种反向查找,
然后我们可以使用(月亮)作为key,(举头望明月,低头思故乡)作为value,
这样的话,又形成了一种反向排序。
这样的话,就是一种倒排索引的原理。
那么倘若我们使用“举”作为key,“举头望明月,低头思故乡”作为value。那么就生成了一种索引信息。
那么倘若我们使用“头”作为key,“举头望明月,低头思故乡”作为value。那么就又生成了一种索引信息。
那么倘若我们使用“望”作为key,“举头望明月,低头思故乡”作为value。那么就又生成了一种索引信息。
那么倘若我们使用“明”作为key,“举头望明月,低头思故乡”作为value。那么就又生成了一种索引信息。
那么倘若我们使用“月”作为key,“举头望明月,低头思故乡”作为value。那么就又生成了一种索引信息。
那么倘若我们使用“低”作为key,“举头望明月,低头思故乡”作为value。那么就又生成了一种索引信息。
那么倘若我们使用“头”作为key,“举头望明月,低头思故乡”作为value。那么就又生成了一种索引信息。
那么倘若我们使用“思”作为key,“举头望明月,低头思故乡”作为value。那么就又生成了一种索引信息。
那么倘若我们使用“故”作为key,“举头望明月,低头思故乡”作为value。那么就又生成了一种索引信息。
那么倘若我们使用“乡”作为key,“举头望明月,低头思故乡”作为value。那么就又生成了一种索引信息。
这个时候,就是一种索引量爆炸的概念。
这两就是es的核心内容:倒排索引,索引量爆炸。
那么拓展一些疑问:什么又是Solr?其实在这里问这个问题,肯定是有关系的对不?
是的,solr也是一种大数据搜索框架。
那么对比两者的区别:
Solr是04年诞生的。而ES是10年诞生了,那么可以猜出,新一点的框架,肯定功能更强大咯。是的。例如在实时添加索引信息的时候,那么这个时候solr的io会出现阻塞现象,但是es不会;例如在实时添加数据的时候,那么solr的读取效率也会很低下,那么反之,es查询效率就会高效,所以我们通常会将其作为日志引擎,比如kibana;