博客
关于我
ElasticSearch概述
阅读量:610 次
发布时间:2019-03-13

本文共 1440 字,大约阅读时间需要 4 分钟。

ElasticSearch 是一个基于 Lucene 的开源分布式全文检索引擎,通过简洁的 RESTful API 隐藏了 Lucene 的复杂性,使得全文搜索变得简单易用。作为强大的全文检索工具,Elasticsearch 能够在大数据时代实时处理 PB 级别的数据,并通过分布式扩展支持百台服务器以上的部署。近年来,在 DB Engines 统计中,Elasticsearch 已经超过 Solr 等成为全文搜索领域的领先引擎。

Lucene 是 ApacheSoftware基金会 Jakarta 项目组的一个子项目,最初由 Google engineer Doug Cutting 在 1998年发起。这款工具包最初是用于 Google 之前,并随后成为 Apache 项目的一部分。Lucene 关注的是全文检索架构,提供索引和搜索功能的工具包。值得注意的是,Lucene 本身并不是一个完整的搜索引擎,而是一个便于开发者在应用中集成的检索引擎框架。其核心功能包括索引结构管理、文本分析、搜索规则定义等,适用于中小型应用中。

Elasticsearch 是基于 Lucene 的进一步封装和增强,目标是通过简化操作隐藏 Lucene 的复杂性。与传统的全文检索框架不同,Elasticsearch 提供了一套完整的 search API,从而使得全文搜索变得简单明了。早期,Elasticsearch 在 Google AdMob 项目中受到了应用,并逐渐发展成为一个强大的搜索引擎解决方案。这让它在维基百科、The Guardian、Stack Overflow 等场景中得到了广泛应用,满足了全文检索、数据分析等多种需求。

对于 Elasticsearch 和 Solr 之间的比较,可以从以下几个方面进行分析:

安装复杂程度: Elasticsearch 的安装过程相对简单,用户只需解压即可开始使用。相比之下,Solr 的安装过程稍微复杂一些,需要配置服务器环境和依赖项。这种差别在部署过程中可能导致不同的运维负担。

分布式支持: Elasticsearch 自带分布式协调管理功能,能够轻松实现横向扩展,适合处理大规模的数据和高并发请求。而 Solr则依托于 Zookpear 统一管理和协调,具备优秀的分布式处理能力,但其硬件资源利用率通常稍逊于 Elasticsearch。

数据格式支持: Solr 支持多种数据格式,包括 JSON、XML、CSV 等,适合处理多样化的数据源和格式。Elasticsearch 则以 JSON 格式为核心,虽然它也支持其他格式,但默认的处理逻辑稍显限制,可能对自定义数据结构要求较高。

功能对比: 在功能实现方面,Solr 更为丰富,提供了更多内置功能和配置选项。而 Elasticsearch 则以核心搜索功能为主,高级功能多依赖于第三方插件,例如图形化界面、数据可视化等需要借助如 Kibana 这样的工具支持。在查询性能方面,Solr 的插件查询和处理机制更为成熟,但其实时性通常稍逊于 Elasticsearch。

综合来看,Elasticsearch建议用于需要实时全文搜索、高扩展性和灵活性较强的场景,例如用户行为分析、日志数据处理、商品搜索系统等。Solr 则更适合传统的搜索应用,依赖于较为成熟和稳定的索引管理流程,适合中小型搜索引擎系统的需求。两者各有优势,选择时应根据具体应用场景和性能需求进行权衡。

转载地址:http://wzkaz.baihongyu.com/

你可能感兴趣的文章
python and或or 当参数传递的时候的用法
查看>>
Python append() 与列表上的 + 运算符,为什么这些会给出不同的结果?
查看>>
Python APP自动化测试工具adb与Monkey使用详解
查看>>
Python APP自动化测试框架Appium详解
查看>>
Python APP自动化测试框架开发实战
查看>>
python argparse模块
查看>>
Python asyncio库的学习和使用
查看>>
Python AttributeError:“dict“对象没有属性“append“
查看>>
Python base64和hashlib模块
查看>>
python basic programs
查看>>
python bert_gen.py 报错Unable to load weights from pytorch checkpoint file for......
查看>>
python binascii.Error: Incorrect padding
查看>>
Python bool() 函数能否为无效参数引发异常?
查看>>
Python C 程序子进程在“for line in iter“处挂起
查看>>
Python Celery:自动化测试平台定时任务必备的三方库
查看>>
python check_output 失败,退出状态为 1,但 Popen 适用于相同的命令
查看>>
Python CONNECT 4 CHECK WIN函数
查看>>
python cos,Python cos(90)和cos(270)不是0
查看>>
python进阶(4):Python 脚本文件重启自身进程
查看>>
python ctypes库中动态链接库加载方式
查看>>