介绍
- es里面数据是通过文档形式表示的,和MongoDB这种面向文档搭配起来很美妙。能完好的存储数据,甚至可以将其直接作为带搜索功能的NoSQL数据存储来使用。
- 构建在Apache Lucene之上的开源分布式搜索引擎,充分利用Lucene,并对其进行了扩展,使存储、索引、搜索都变得更快、更容易。
- 应用代码也不是必须用Java书写才可以和es兼容,完全可以通过JSON格式的HTTP请求来进行索引、搜索和管理es集群。
解决问题
-
提供快速查询
es基于Lucene作为底层,Lucene是个高性能的搜索引擎包,默认情况下会将所有的数据全部进行索引。Lucene使用的是倒排索引,倒排索引很适合做搜索。 -
确保结果的相关性
es中可以采用某些算法来计算相关性的得分。对于每个符合查询条件的文档,它的相关性得分标示该文档和查询条件的相关程度。影响相关性得分的两个因素有如下:· 词频:所查找的某个单词在所有文档中出行的次数越多,得分越高。 · 逆文档词频:如果某个单词在所有文档中比较少见,那么该词的权重越高,得分也会越高。
-
超越精准匹配
· 处理错误的拼写:输入搜索条件,匹配结果的容忍一些错误拼写 · 支持变体:搜索bicycle,bicyclist或cycling会同时匹配 · 使用统计信息:用户不清楚搜索什么,通过:聚集统计数据,推荐类似于热门的一些数据 · 给予自动提示:通过特殊的查询类型来匹配前缀、通配符或正则表达式。类似于建议器
应用场景
- 将es作为主要的后端系统(存储系统,支持搜索)
- 将es添加到现有的系统(mysql增删改数据同步到es,用于实时搜索)
- 将es和现有工具一起使用(elk)