当前位置: 首页 > news >正文

ElasticSearch 学习(一)-- 概念

1、Doug Cutting

深入浅出大数据:到底什么是Hadoop?


Lucene_百度百科 (baidu.com)

Lucene 是 apache 软件基金会 jakarta 项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。

Lucene 的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

Lucene 和 ElasticSearch 的关系:

ElasticSearch 是基于 Lucene 做了一些封装和加强。

2、ElasticSearch 概述

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎

Elasticsearch 能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。

Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。

Elasticsearch使用 Lucene,并试图通过J SON 和 Java API 提供其所有特性。Elasticsearch支持实时GET请求,适合作为NoSQL数据存储,但缺少分布式事务。

3、ES 和 Solr 的区别

3.1、Elasticsearch 简介

Elasticsearch 是一个实时分布式搜索和分析引擎。它让你以前所未有的速度处理大数据成为可能。

它用于全文搜索、结构化搜索、分析以及将这三者混合使用:

  • 维基百科使用Elasticsearch提供全文搜索并高亮关键字,以及输入实时搜索(search-asyou-type)和搜索纠错(did-you-mean)等搜索建议功能。

  • 英国卫报使用Elasticsearch结合用户日志和社交网络数据提供给他们的编辑以实时的反馈,以便及时了解公众对新发表的文章的回应。

  • StackOverflow结合全文搜索与地理位置查询,以及more-like-this功能来找到相关的问题和答案。

  • Github使用Elasticsearch检索1300亿行的代码。

但是Elasticsearch不仅用于大型企业,它还让像DataDog以及Klout这样的创业公司将最初的想法变成可扩展的解决方案。Elasticsearch可以在你的笔记本上运行,也可以在数以百计的服务器上处理PB级别的数据。

Elasticsearch 是一个基于Apache Lucene™的开源搜索引擎。无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
但是,Lucene只是一个库。想要使用它,你必须使用ava来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。
Elasticsearch 也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

3.2、Solr 简介

Solr 是Apache下的一个顶级开源项目,采用lava开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。

Solr 可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr索引的实现方法很简单,**用POST方法向Solr服务器发送一个描述Field及其内容的XML文档,Solr根据xml文档添加、删除、更新索引。**Solr搜索只需要发送HTTP GET请求,然后对Solr返回Xml、 json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

solr 是基于lucene开发企业级搜索服务器,实际上就是封装了lucene。

Solr 是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的文件,生成索引;也可以通过提出查找请求,并得到返回结果。

3.3、Lucene 简介

Lucene 是apache软件基金会 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。

Lucene 的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

Lucene 是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。

Lucene 提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆。

3.4、ES 和 Solr 的区别

  • 当单纯对已有的数据进行搜索时,Solr 更快。

  • 当实时建立索引时,Solr会产生io阻塞,查询性能较差,Elasticsearch具有明显的优势。

  • 随着数据量的增加,Solr 的搜索效率会变得更低,而 Elasticsearch 却没有明显的变化。

Elasticsearch vs solr 总结

1、es 基本是开箱即用(解压就可以用!),非常简单。Solr 安装略微复杂一丢丢!

2、Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能。

3、Solr支持更多格式的数据,比如JSON、XML、CSV,而Elasticsearch仅支持json文件格式。

4、Solr官方提供的功能更多,而Elasticsearch本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要kibana友好支撑

5、Solr查询快,但更新索引时慢(即插入删除慢),用于电商等查询多的应用;

  • ES建立索引快(即查询慢),即实时性查询快,用于facebook新浪等搜索。
  • Solr是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用。

6、Solr比较成熟,有一个更大,更成熟的用户、开发和贡献者社区,而Elasticsearch相对开发维护者较少,更新太快,学习使用成本较高。

相关文章:

  • 用户登录权限校验 JWT【详解】
  • php laravel开发的个人博客源码分享,支持适配移动端附截图
  • 基于模糊认知图谱和遗传算法的龋齿度检测(Matlab代码实现)
  • 【表面缺陷检测】基于yolov5的PCB表面缺陷检测(附代码)
  • 主动学习(Active Learning)简介综述汇总以及主流技术方案
  • 详解KMP
  • 基于QD求解法的二分类SVM仿真
  • 【音视频】1、图像、视频编码、网络协议超详细介绍
  • 基于SSM实现高校应届生就业管理系统
  • 【2020-10-26】JS逆向之同盾滑块
  • CCPC 2021桂林铜牌题G(二分),D(贪心)
  • thinkphp6+layui BBS社区论坛系统源码分享,支持适配移动端附截图
  • 链路状态路由协议 OSPF (二)
  • 大前端进阶:vue
  • CNN基于肺部CT数据开发实现肺部疾病识别系统
  • JavaScript 如何正确处理 Unicode 编码问题!
  • CODING 缺陷管理功能正式开始公测
  • GraphQL学习过程应该是这样的
  • input的行数自动增减
  • Java比较器对数组,集合排序
  • Js基础——数据类型之Null和Undefined
  • Linux各目录及每个目录的详细介绍
  • Twitter赢在开放,三年创造奇迹
  • Vue组件定义
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 大型网站性能监测、分析与优化常见问题QA
  • 简单数学运算程序(不定期更新)
  • 聊聊redis的数据结构的应用
  • 嵌入式文件系统
  • 强力优化Rancher k8s中国区的使用体验
  • 如何设计一个比特币钱包服务
  • 手机端车牌号码键盘的vue组件
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 由插件封装引出的一丢丢思考
  • 阿里云移动端播放器高级功能介绍
  • 组复制官方翻译九、Group Replication Technical Details
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #QT(串口助手-界面)
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (附源码)计算机毕业设计大学生兼职系统
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (四)图像的%2线性拉伸
  • (学习日记)2024.01.19
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)详解PHP处理密码的几种方式
  • **PHP分步表单提交思路(分页表单提交)
  • . Flume面试题
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .Net FrameWork总结
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • ??eclipse的安装配置问题!??
  • @Validated和@Valid校验参数区别
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?