1.什么是搜索引擎,能解决什么样的问题?
快速的返回搜索结果或者相应的统计信息,即解决快速搜索的问题
引擎可以快速的返回查询结果,而且这些结果都是相关的
搜索引擎还能提供辅助搜索的功能,这些辅助功能包括识别错误输入,给出自动提示,并对结果进行分类
2.什么是ES?
ES是构建在Lucence基础之上的开源分布式搜素引擎,Lucene是个高性能的搜索引擎包,默认情况下将所有的数据全部进行索引(倒排索引)
ES是一个现代搜索引擎,提供了持久化存储、统计和很多其他数据存储的特性
ES由Java语言进行编写,但不仅仅Java API可以和它进行交互,它还提供了REST API,供其它语言进行调用
JSON和YAML(YAML Ain't Markup Language):JSON很容易解析和生成,YAML可以达到同样的目的。在HTTP请求中添加format=yaml的参数即可激活YAML,通常JSON用于HTTP连接,而配置文件使用YAML书写
与其他的NoSQL存储一样,ES并不支持事务
注:为了提升搜索的性能和相关性,还需要更多的磁盘空间来索引
ES使用几个算法(默认为TF-IDF即词频-逆文档算法)来计算相关性的得分,然后根据分数来将结果逐个排序
相关性得分:标示该文档和查询条件的相关程序
3.ES如何解决搜索问题?
提供快速查询、确保结果相关性、超越精确匹配(处理错误的拼写、支持变体、使用统计信息、给予自动提示)
4.ES的特性
可以轻松的使用Lucene的索引功能,并搜索数据
在Lucence提供的功能之上,ES添加了高级功能,从缓存到实时分析
多个索引可以单独搜素,也可以同时搜索
默认集群化(即使单台机器也称为集群),灵活度高
当考虑文档索引的方式时,一个重要的方面是分析。默认的分析器首先通过空格和逗号这样的常用分隔符将文本拆解为单词
ES不同于关系型数据库采用记录和行的形式组织数据。它以文档的形式存储数据。它们的区别在于:在ES中,文档比数据表的行为更加灵活。因为文档是有层次型的,它可以将一个逻辑实体的的数据保存到同一个文档中,而不是让它们散落在不同的数据表的不同行中
5.ES如何融入更大的系统?
将ES作为网站的主要后端系统
将ES添加到现有系统(数据同步问题)
将ES作为现有解决方案中的后端部分
若想部署大规模的日志框架,用于存储、搜索和分析海量的事件。比如为了处理日志输出到Elasticsearch,可以使用Rsyslog、Logstash或者Apache Flume这样的日志工具。若想通过可视化界面搜索和分析日志,可以使用Kibana
6.ES和Solr?
Solr是基于Lucene的分布式搜索引擎
Solr诞生于2004年,而ElasticSearch诞生于2010年。当ES出现时,相比于其他搜索引擎更容易水平扩展
ES和Solr都拥有对方不具备的特性,两者如何选择取决于特定时期所需要的具体功能