ElasticSearch简介
ES如何解决搜索问题
ElasticSearch是构建在Apache Lucene上的开源分布式搜索引擎。
由于ElasticSearch是以Lucene作为底层的,Lucene是一个高性能的搜索引擎包,默认情况下会将所有数据进行索引,Lucene使用的是倒排索引,倒排索引如下所示:
博客文章ID | 标签 | 标签 | 博客文章ID |
---|---|---|---|
1 | elections | elections | 1,3 |
2 | peace | peace | 2,3,4 |
3 | elections, peace | ||
4 | peace |
左边是原始数据,右边则是倒排索引。
一个关键的问题:如何排序,方法是计算相关性得分,根据分数将结果排序,默认情况下使用的算法是TF-IDF(词频-逆文档频率),主要有两个影响因素:
- 词频,出现次数越高,相关性得分越高。
- 逆文档频率,在所有文档上出现次数少的词权重越高,得分越高。
ES不仅仅是精确匹配用户的输入,还可以:
- 处理错误拼写
- 支持变体
- 使用统计信息
- 给予自动提示
ES使用场景
ES主要有三种使用场景
一、将ES作为主要的后端系统:
ES是一个现代化搜索引擎,提供了持久化存储、统计和很多其他数据存储的特性。可用作简单系统的后端。
二、将ES添加到现有的系统:
在有一个数据存储的基础上使用ES,如果想在现有系统中加入搜索功能,可以加入ES让它和现有模块协同工作。
三、将ES和现有工具一同使用:
可以通过Rsyslog、Logstash或Apache Flume这样的日志工具处理日志并输出到ElasticSearch,并用Kibana作可视化界面搜索和分析日志。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!