es是什么?
ElasticSearch简写es,es是一个高扩展、开源的全文检索和分析引擎,它可以准实时地快速存储、搜索、分析海量的数据。
es是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。
es使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
为什么用es做搜索?
若使用传统数据库(如MySql)来做搜索业务的话,缺点显而易见:
- 随着数据量的增大,消耗的资源和时间都会线性的增。
- 数据库并不支持分词。如果人工去开发分词功能,费时费精力。
- 数据库并不支持相关性搜索。
- 数据库自身通常不带可视化界面。而在完成搜索相关的任务时,常常需要根据搜索结果来进行分析。
而es却能很好的解决这些问题。
- es是基于倒排索引的,TB级数据在毫秒级就能返回检索结果。例如当你搜索“手机”时,ElasticSearch就会立即返回含这个词语的文档。这样就不用花多余的时间在其他文档上了,因此检索速度得到了数量级的提升。
- ElasticSearch支持中文分词插件,会自动分好词。例如当你搜索“四川火锅”时,ElasticSearch会自动做下面两件事
(1) 将“四川火锅”分词成“四川”和“火锅”
(2) 查找包含这两个词的文档 - ElasticSearch支持全文搜索和相关度评分。这样在返回结果就会根据分数由高到低排列。分数越高,意味着