文章目录
搜索面临的问题
几乎每一个网站都会有全文检索功能,全文检索与传达的sql查询有很大的区别,sql查询一般是从结构化数据中查询指定的数据,而全文检索是从海量的非结构化数据中查询出匹配的数据,而且对查询速度的要求非常高,同时还要支持海量数据的统计分析能力。
ES是一个基于Lucene的分布式海量数据搜索引擎,它提供了简单的resut api访问接口、支持大规模集群部署、能够提供几乎实时的查询、具有数据统计分析功能,同时还有大量的第三方插件来丰富es的功能。
ES的使用场景
- 站内搜索、自动补全
- 日志分析
- 数据预警(Machine Learning)
- 数据分析
ES的基础原理
ES底层基于Lucene,对数据进行分片存储,通知对分片提供副本冗余,保证数据的安全性。
一般情况下,我们会领域JavaApplication/Flume等工具从其他数据源总拉取数据,然后将其写入ES中,ES中的数据是存在在索引库中的,索引库相当于RDB中的一张表,在写入数据前我们要先创建索引库
,然后将待写入数据构造成索引文档(Document)
,索引文档相当于RDB中的一条记录,包含了多个Field
,每个Field可以有不同了类型,然后ES会多Filed进行分词,构造倒排索引
,最终将原始数据写入索引库
,对于索引,一般会进行大小写转换