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(词频-逆文档频率),主要有两个影响因素:

  1. 词频,出现次数越高,相关性得分越高。
  2. 逆文档频率,在所有文档上出现次数少的词权重越高,得分越高。

ES不仅仅是精确匹配用户的输入,还可以:

  1. 处理错误拼写
  2. 支持变体
  3. 使用统计信息
  4. 给予自动提示

ES使用场景

ES主要有三种使用场景

一、将ES作为主要的后端系统:

ES是一个现代化搜索引擎,提供了持久化存储、统计和很多其他数据存储的特性。可用作简单系统的后端。

场景1

二、将ES添加到现有的系统:

在有一个数据存储的基础上使用ES,如果想在现有系统中加入搜索功能,可以加入ES让它和现有模块协同工作。

场景2

三、将ES和现有工具一同使用:

可以通过Rsyslog、Logstash或Apache Flume这样的日志工具处理日志并输出到ElasticSearch,并用Kibana作可视化界面搜索和分析日志。

场景3


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!