lucene、solr、es的区别以及应用场景

目录

  • 1. Lucene:
  • 2. Solr:
  • 3. Elasticsearch:

Lucene、Solr 和 Elasticsearch(ES) 都是基于 Lucene 引擎的搜索引擎,它们之间有相似之处,但也有一些不同之处。
Lucene 是一个低级别的搜索引擎库,它提供了一种用于创建和维护全文索引的 API,以及一些搜索和排序算法。Lucene 主要用于构建自定义搜索引擎,例如在 Java 应用程序中使用。
Solr 是 Lucene 的一个扩展,它提供了一个完整的搜索引擎框架,包括了索引、搜索、排序、过滤等功能。Solr 旨在为大规模数据集提供高性能的全文搜索功能,因此它支持分布式搜索、实时搜索和自定义排序和过滤器等功能。
Elasticsearch 是一个开源的分布式搜索引擎,它基于 Lucene 引擎,并提供了许多高级功能,如多语言搜索、聚合、映射和地理位置查询等。Elasticsearch 还提供了一个分布式架构,可以使其横向扩展以处理大规模数据集。
Lucene、Solr 和 Elasticsearch 的优缺点如下:

1. Lucene:

优点:

  • 低成本、快速上手、开源社区发达。
  • 涵盖了信息检索的几乎全部基础知识和非常高性能的实现方式。
  • 提供了一些工程亮点”,熟读 Solr 定会增加对 Java 的理解、运用技能。
    缺点:
  • 只提供了一个低级别的搜索引擎库,需要自行构建搜索引擎框架。
  • 不支持分布式搜索、实时搜索和自定义排序和过滤器等功能。

2. Solr:

优点:

  • 提供了一个完整的搜索引擎框架,包括了索引、搜索、排序、过滤等功能。
  • 支持分布式搜索、实时搜索和自定义排序和过滤器等功能。
  • 旨在为大规模数据集提供高性能的全文搜索功能。
    缺点:
  • 熟悉了 Solr、Lucene 并不能说一定可以应对任何搜索需求。
  • 实际场景中,有许多千奇百怪的需求、问题,往往需要面对的是用最小的改动、最方便的形式满足需求,而不是,是否满足以及多久满足的问题,要的是简单、可靠、可控、快速接入、快速处理故障。

3. Elasticsearch:

优点:

  • 提供了一个开源的分布式搜索引擎,支持多语言搜索、聚合、映射和地理位置查询等高级功能。
  • 提供了一个分布式架构,可以横向扩展以处理大规模数据集。
  • 支持多种数据存储格式,包括 XML、JSON、SQL 等。
    缺点:
  • 学习曲线较陡峭,需要掌握 Lucene、Solr 的基础知识才能更好地理解 Elasticsearch。
    在应用场景方面,Lucene 和 Solr 主要用于构建自定义搜索引擎,例如在 Java 应用程序中使用。Elasticsearch 则主要用于处理大规模数据集的全文搜索和实时搜索,例如在电商网站中搜索商品,或者在社交媒体中搜索用户发的帖子等。
    在案例分析方面,以 Solr 为例,曾有一个漏洞是攻击者可以通过恶意构造 XML 数据,利用 Solr 解析 XML 数据时的漏洞,执行任意命令。此漏洞是由于 Solr 在解析 XML 数据时,未对恶意外部实体进行防御措施,导致攻击者可以利用该漏洞进行攻击。
    Solr 还存在一个 RCE 漏洞,攻击者可以通过发送特定的 HTTP 请求,执行任意命令。该漏洞是由于 Solr 在处理 HTTP 请求时,未对请求进行充分的验证和过滤,导致攻击者可以利用该漏洞进行攻击。
    针对这些漏洞,Solr 官方发布了多个版本更新,以修复这些漏洞。同时,Solr 官方还提供了一些安全建议,以帮助用户提高 Solr 的安全性,如限制 XML 实体、使用 XXE 通用防御等。
    在代码分析方面,Lucene 和 Solr 的代码都比较复杂,需要掌握一定的 Java 编程知识和搜索引擎原理才能理解。Elasticsearch 的代码相对较简单,但也需要掌握一定的 Java 编程知识和分布式系统原理才能理解。
    总结起来,Lucene、Solr 和 Elasticsearch 都是基于 Lucene 引擎的搜索引擎,它们之间有相似之处,但也有一些不同之处。在选择使用哪种搜索引擎时,需要根据具体的应用场景和需求进行权衡和选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/10258.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RNN架构解析——GRU模型

目录 GRU模型实现优点和缺点 GRU模型 实现 优点和缺点

【C语言day06】

逻辑或运算如果前表达式为真,后表达式不计算,第一次循环时i为0,执行i,第二次循环时i为1,是个真值,不再执行i,也就死循环了 在C语言中,一个函数如果不写返回值类型,那么就…

【MyBatis 学习三】子段不一致问题 多表查询 动态SQL

目录 一、解决Java实体类属性与数据库表字段不一致问题 🌷现象1:显示字段不对应:使用ResultType查询结果为null; 🌷解决办法:字段不对应:使用ResultMap解决。 二、数据库的多表查询 &#…

Go整合ElasticSearch

go整合elasticsearch 基于docker搭建开发环境在开发之前我们首先需要借助docker来构建我们的开发环境,先创建一个文件名称为docker-compose.yaml, 里面写入下面的内容: ---version: "3"services:elasticsearch:image: docker.elastic.co/elasticsearch/elasticsea…

Centos 7 - Anaconda3 安装教程及报错集锦

序言 这里笔者下载清华镜像,总会有问题,例如 wget 下载报错 安全证书什么的,就算解决证书问题,还不能下载,直接报错 Forbidden 403 ,但是中科大镜像就不会。 中科大镜像 1、报错 WARNING: cannot verify…

【Spring Cloud Alibaba】Sentinel运行原理

文章目录 前言1、基本原理2、SphU.entry()2.1、StringResourceWrapper2.2、Entry 3、entry.exit()4、Context 前言 本文基于sentinel-1.8.0版本 Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保…

AVFoundation - 音视频组合编辑

文章目录 一、简要说明二、使用1、音频和视频合成2、视频的拼接一、简要说明 相关类 AVMutableCompositionAVMutableCompositionTrack二、使用 1、音频和视频合成 - (void)testCom1{AVMutableComposition *mutableComposition = [AVMutableComposition composition];AVMu

ajax axios json

目录 一、ajax概述 1. 概念 2. 实现方式 (1)原生的JS实现方式(了解) (2) JQeury实现方式 二、axios 介绍 三、axios使用 1. axios 发送get/post请求 2. axios验证用户名称是否存在 四、json 1. …

设计模式——观察者模式

文章目录 1 概述2 实现3 总结 1 概述 观察者模式可以分为观察者和被观察者,观察者通过注册到一个被观察者中,也可视为订阅,当被观察者的数据发生改变时,会通知到观察者,观察者可以据此做出反应。 可以类比订阅报纸&am…

vue3+ts+elementui-plus二次封装弹框

一、弹框组件BaseDialog <template><div classmain><el-dialog v-model"visible" :title"title" :width"dialogWidth" :before-close"handleClose"><!-- 内容插槽 --><slot></slot><template…

每天一个linux小技巧

1.nohup no hang up&#xff0c;用nohup运行命令可以使命令永久的执行下去&#xff0c;和用户终端没有关系&#xff0c;例如我们断开SSH连接都不会影响他的运行&#xff0c;注意了nohup没有后台运行的意思。 加&的作用是将&#xff0c;命令放到后台运行&#xff0c;使得终端…

【Docker】Consul的容器服务更新与发现

目录 一、Consul二、什么是服务注册与发现1.2什么是consul1.3consul提供的一些关键特性 二、Consul部署2.1环境配置2.2Consul服务器配置1. 建立 Consul 服务2. 查看集群信息3. 通过 http api 获取集群信息 2.3 registrator服务器配置1. 安装 Gliderlabs/Registrator2. 测试服务…

代码随想录算法训练营第四十九天|动态规划part10|● 121. 买卖股票的最佳时机 ● 122.买卖股票的最佳时机II

● 121. 买卖股票的最佳时机 Best Time to Buy and Sell Stock - LeetCode dp[i][0] 持有股票得到的最大现金 dp[i][1] 不持有股票得到的最大现金 dp[i][0] max(dp[i - 1][0], -price[i]); dp[i - 1][1] dp[i - 1][0] price[i] dp[i][1] max(dp[i - 1][0], dp[i - 1] pric…

【数据挖掘】PCA/LDA/ICA:A成分分析算法比较

一、说明 在深入研究和比较算法之前&#xff0c;让我们独立回顾一下它们。请注意&#xff0c;本文的目的不是深入解释每种算法&#xff0c;而是比较它们的目标和结果。 如果您想了解更多关于PCA和ZCA之间的区别&#xff0c;请查看我之前基于numpy的帖子&#xff1a; PCA 美白与…

Leetcode-每日一题【114.二叉树展开为链表】

题目 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例…

JavaEE——Spring中存取Bean的注解

目录 一、存储Bean对象 1、定义 2、存储方式 &#xff08;1&#xff09;、类注解 【1】、Controller&#xff08;控制器存储&#xff09; 【2】、Service&#xff08;服务存储&#xff09; 【3】、Repository&#xff08;仓库存储&#xff09; 【4】、Component&#xf…

9个可用于图片转文本的最佳免费 OCR 软件

光学字符识别 (OCR) 软件可帮助将不可编辑的文档格式&#xff08;例如 PDF、图像或纸质文档&#xff09;转换为可编辑和可搜索的机器可读格式。 OCR 应用程序通常用于从 PDF 和图像中捕获文本&#xff0c;并将文本转换为可编辑格式&#xff0c;例如 Word、Excel 或纯文本文件。…

Unity小游戏——武士打怪兽(总)

Unity小游戏——武士击杀小怪兽&#xff08;无限滚动的背景&#xff09;_七七喝椰奶的博客-CSDN博客 Unity小游戏——无限滚动的背景的改良_七七喝椰奶的博客-CSDN博客 Unity小游戏——怪物出现模式的管理_七七喝椰奶的博客-CSDN博客 Unity小游戏——武士和怪物的碰撞检测_七…

uniapp页面通信学习笔记

1、利用url传参进行通讯 A页面向B页面传递参数 uni.navigateTo({ url: test/test?id1&url encodeURIComponent(https://dcloud.io) }); B页面接收A页面传递的参数 export default { onLoad: function (option) { //option为object类型&#xff0c;会序列化上个页面…

将Windows的文件打包为Linux、Ubuntu可打开的格式

设置共享文件夹具体操作 设置共享文件夹 上述这篇文章完整讲述了如何设置一个可以在Windows及虚拟机之间互传文件的文件夹 7zip下载地址 Download 打包具体操作 a. 安装7-ZIP以后&#xff0c;直接在你想要打包的文件上点右键菜单&#xff0c;会有一个7-ZIP的子菜单栏&#…