译者微博:@从流域到海域 译者博客:blog.csdn.net/solo95 如何将结构化数据导入Solr 这篇文章总结了我们在搜索中数据提取方面的经验。...Solr数据导入处理器 - DIH 首先我要说明的是,我是数据导入处理器(Data Import Handler)的忠实粉丝。...它与任何其他ETL工具一样方便- 您无需编写调用SolrJ的Java代码并在IDE中调试SQL查询结果。如果使用DIH,您可以只使用配置和复制粘贴式查询就能够在SolrAdmin中把玩查询和数据。...为了解决并发问题,我们可以在逻辑上使用特制的查询将数据分片,并且平行的启动每个分片导入(线程)。...然而,目前的DIH设计下这是不可能的,但我们扔有很大的突破性尝试 - SOLR-7188。打起精神!这将是一个伟大的胜利,让我们运行DIH来作为一个真正的ETL工具。
”参数。...DIH管理的调试模式使用它来方便地调试DIH配置的开发。因为DIH配置可以包含script脚本,所以这个参数存在安全风险。...从Solr的8.2.0版本开始,使用这个参数需要设置 Java System property,设置"enable.dih.dataConfigParam" 为 true.。...的特性ScriptTransformer,称为脚本转换器,使用菜单项的dataimport功能时通过连接数据源获取数据索引,然后触发用户自定义的script处理查询出来的数据,实现命令执行。...建议启动solr时添加对应的参数,通过java security manager 设置也可以进行安全加固。笔者认为严格来说并不能算是安全漏洞,仅仅是安全设计问题,只是支持的功能特性的范围太宽泛了。
是用于从数据库或其他源提取数据的常用模块,该模块中所有DIH配置都可以通过外部请求的dataConfig参数来设置,由于DIH配置可以包含脚本,因此该参数存在安全隐患。...攻击者可利用dataConfig参数构造恶意请求,实现远程代码执行,请相关用户尽快升级Solr至安全版本,以确保对此漏洞的有效防护。 ?...4漏洞防护 4.1 官方升级 从Solr的8.2.0版本开始,使用问题参数dataConfig需要将java系统属性“enable.dih.dataconfigparam”设置为true。...经测试,官方给出防护方案置dataConfig参数为空字符串无效,用户需参考上述方案对此漏洞进行防护。 2、确保网络设置只允许可信流量与Solr建立通信,尤其是与DIH请求处理器的通信。...https://cwiki.apache.org/confluence/display/solr/DataImportHandler 其中ScriptTransformer可以编写自定义脚本,支持常见的脚本语言如
Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558) 漏洞描述 Solr是Apache Lucene项目的开源企业搜索平台。...影响版本 5.0.0 到 8.3.1版本 漏洞复现 默认情况下params.resource.loader.enabled配置未打开,无法使用自定义模板。...当solr开启了DataImportHandler功能,该模块中的DIH配置都可以通过外部请求dataconfig参数进行修改,DIH可包含脚本,因此,会存在远程代码执行漏洞。...查询该集合也是通过 http收到一个XML/JSON响应来实现。...漏洞复现 首先创建一个listener,其中设置exe的值为我们想执行的命令,args的值是命令参数: ?
查询该集合也是通过 http收到一个XML/JSON响应来实现。...包含了一个查询解析器支持XML格式进行数据查询,出现问题的代码片段在 /solr/src/lucene/queryparser/src/java/org/apache/lucene/queryparser...它具有一个功能,其中所有的DIH配置都可以通过外部请求的dataConfig参数来设置。由于DIH配置可以包含脚本,因此攻击者可以通过构造危险的请求,从而造成远程命令执行。...Solr请求参数中指定模版,默认设置是false。...d example/example-DIH/solr/db 2.搭建好后访问页面。
举个例子:cp -R example realestate. 2 清空复制后文件夹,移掉没有使用的Solr home文件夹,比如example-DIH/和 multicore/;如果你需要链回他们,...第二步,我们开始运行Solr示例服务器,并且通过post.jar的cmd命令加入例子文档。 当加入文档后,我们介绍了Solr的查询表单,你学习了Solr查询的基本组件。...特别的,你学习了如何去构建一个包含主要查询参数q和过滤关键词fq的查询。你明白了如何使用fl参数控制返回结果的域和使用sort关键词对结果进行排序。...你将在第7章学习更多的查询。 我们介绍你搜索组件和提供了使用Solritas示例UI如何工作的视野。特别的,你看到facet组件允许用户使用动态生成的过滤器,即facets对搜索规则进行重新定义。...我们认为这是一个很好的方式来启动,如此你可以拥有一个符合自己需求的正在工作的Solr例子。 你已经可以运行一个Solr例子了,是时候开始学习Solr的重要概念了。
”,具体步骤是: 点击页面下的Execute Query按钮后右侧就会显示查询结果,这个结果就是刚才导入进去的solr.xml的json格式的展示结果。...数据导入 导入数据到Solr的方式也是多种多样的: 可以使用DIH(DataImportHandler)从数据库导入数据 支持CSV文件导入,因此Excel数据也能轻松导入 支持JSON格式文档 二进制文档比如...:Word、PDF 还能以编程的方式来自定义导入 更新数据 如果同一份文档solr.xml重复导入会出现什么情况呢?...stream.body=title:abc AND name:zhang&commit=true 查询数据 查询数据都是通过HTTP的GET...q=solr&fl=name&wt=json&indent=true 排序 Solr提供排序的功能,通过参数sort来指定,它支持正序、倒序,或者多个字段排序 q=video&sort=price
,并多数据进行收集,正因为开放了远程地址,可导致攻击者构造恶意的代码对DIH进行脚本注入,从而让后端服务器对恶意代码进行了执行,该漏洞可导致服务器被攻击,被入侵,关于该漏洞的详情我们SINE安全技术深入的带大家来分析...apache这个漏洞影响范围较广低于solr 8.2.0版本的都会受到漏洞的影响与攻击,本身这个solr模块就支持从远程的地址进行数据的收集与导入功能,当用户对dataimport进行使用的时候首先会调用...handleRequestBody类,并将请求的模块进行重新配置,默认代码会对params.getDataConfig()参数里post值进行判断,当值为空就不会加载dataconfig里的配置,截图如下...紧接着加载配置,对post值的相关参数进行赋值,像,datasoure,document等变量进行赋值,post里的自定义的参数会自动存入变量中,然后返回数据并保存,进行导入数据。 ?...首先请各位网站,服务器的运维人员对当前的apache solr版本继续查看,登录solr的控制面板,可以查看到当前的版本,如果低于8.2.0,说明存在漏洞,将solr的版本升级到最新版本,也可以对apache
,并多数据进行收集,正因为开放了远程地址,可导致攻击者构造恶意的代码对DIH进行脚本注入,从而让后端服务器对恶意代码进行了执行,该漏洞可导致服务器被攻击,被入侵,关于该漏洞的详情我们SINE安全技术深入的带大家来分析...: apache这个漏洞影响范围较广低于solr 8.2.0版本的都会受到漏洞的影响与攻击,本身这个solr模块就支持从远程的地址进行数据的收集与导入功能,当用户对dataimport进行使用的时候首先会调用...handleRequestBody类,并将请求的模块进行重新配置,默认代码会对params.getDataConfig()参数里post值进行判断,当值为空就不会加载dataconfig里的配置,截图如下...: 紧接着加载配置,对post值的相关参数进行赋值,像,datasoure,document等变量进行赋值,post里的自定义的参数会自动存入变量中,然后返回数据并保存,进行导入数据。...首先请各位网站,服务器的运维人员对当前的apache solr版本继续查看,登录solr的控制面板,可以查看到当前的版本,如果低于8.2.0,说明存在漏洞,将solr的版本升级到最新版本,也可以对apache
查询语句...--> deltaImportQuery="SELECT * FROM userinfo where spuid='${dih.delta.spuid}'" deltaQuery...在菜Thread Dump下方有一个下拉框,选择刚新建的Core,点击Schema 里的Add field菜单,name输入刚才配置的查询语句中的某个字段(假设该字段为字符串类型),点击field type...回到左侧菜单,选择Query,点击Execute Query,如果右侧查询出数据,恭喜你,你已经配置好了; 可根据第八步继续添加自己想要的字段,重复9 10步骤; 二、中文分词 Solr7之前好像大部分使用的是...command=delta-import&clean=false&commit=true 差异导入 这里clean参数如果是true,会把之前的数据清空掉,然后导入差异的数据,在差异性导入时注意这个参数
查询该集合也是通过 http收到一个XML/JSON响应来实现。.../solr create_core -c alice -d../example/example-DIH/solr/db –force ? 然后,启动环境 ?...0X03 漏洞利用 当solr默认插件VelocityResponseWrite中 params.resource.loader.enabled参数值为true(默认false),再通过精心构造的get...如果存在solr未授权访问,可post直接修改params.resource.loader.enabled参数值为true。...所以,在上一步我们经过post提交数据已经修改了这两项参数值,所以目前漏洞是可以触发的。
自定义分词如下所示: ? 启动你的tomcat,然后重新查询一下,看看效果如何: ? 9、scheam.xml文件中属性的解释和说明? ...,也可以自定义唯一主键。...FieldType首先需要在types结点内定义一个FieldType子结点,包括name,class,等参数,name就是这个FieldType的名称,class指向org.apache.solr.analysis...8 # 根据需求配置自定义域。如果不使用Solr提供的Field可以针对具体的业务需要自定义一套Field。 9 Solr制定一些参数完成不同需求的搜索: 2 a、q代表查询字符串,必须的,如果查询所有使用*:*。
/usr/lib/ambari-infra-solr/example/example-DIH/solr/db/conf目录下;SolrCloud里面也有默认的一组 configset配置组,位置在 Zookeeper...;false:该字段不能进行查询 stored:是否存储,true:查询到数据是可以返回此字段;false:该字段不进行存储,即便查询到了结果,也不会返回这个字段 required:是否必填,对应数据库中的...说明 entity entity是document下面的标签(solr-data-config.xml)。使用这个参数可以有选择的执行一个或多个entity 。...使用多个entity参数可以使得多个entity同时运行。如果不选择此参数那么所有的都会被运行。...六、数据查询 点击 Query选项,点击页面下方的蓝色按钮 ExecuteQuery,进行全部查询。返回结果如下图所示: ? ----
的数据查询完全基于http,可以通过简单的post参数,返回json,xml,php,python,ruby,csv等多种格式。...-5.5.0/example/example-DIH/solr/db/conf下面的所有文件全部拷贝到我们创建的conf目录中.接下来的配置主要涉及到三个文件, solrconfig.xml, schema.xml...,solr的查询全部使用post参数,比如: http://localhost:8983/solr/solr_mysql/select?...,在db-data-config.xml中做如下设置: last_index_time和delta.id是两个自动变化的参数,分别记录最后一次导入数据的时间和已导入的最大id值,存储于当前core的conf...现在我们的服务器搭建还剩下最后一件事:既然现在我们准备把solr查询提供给别人用,那么问题来了,我们只希望别人通过tomcat里的servlet查询,而不希望直接调用solr,我们需要屏蔽外部查询: 如果把
漏洞概述 2019年08月01日,Apache Solr官方发布预警[1],Apache Solr DataImport功能 在开启Debug模式时,可以接收来自请求的"dataConfig"参数,这个参数的功能与...根据关键词解析(queryParser)出查询条件query(Termquery),利用搜索工具(indexSearcher)去索引库获取文档id,然后再根据文档id去文档信息库获取文档信息 3.2...-d 参数是指定配置模板,在solr 7.7.2下,有_default与sample_techproducts_configs两种模板可以使用 ?...),他配置的时怎样获取数据(查询语句、url等等)要读什么样的数据(关系数据库中的列、或者xml的域)、做什么样的处理(修改/添加/删除)等,Solr为这些数据数据创建索引并将数据保存为Document...DataImportHandler# [8] https://stackoverflow.com/questions/51838282/correct-using-contentstreamdatasource-in-dih
Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、 6 搜索性能进行了优化。...Solr搜索只需要发送 HTTP GET 请求,然后对 Solr返回Xml、json等格式的查询结果进行解析,组织页面布局。...9 Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。 10 11 3、Solr与Lucene的区别。...关于solr的collection,一个collection就是一个独立的索引库。不同的collection之前的索引库没有关系。 ? 如何将mysql中的业务数据导入到solr里面呢? ...-- 自定义分析器,name是自己的名称,不要重复--> 4 <!
官方发布预警,Apache Solr DataImport功能 在开启Debug模式时,可以接收来自请求的"dataConfig"参数,这个参数的功能与data-config.xml一样,不过是在开启Debug...模式时方便通过此参数进行调试,并且Debug模式的开启是通过参数传入的。...根据关键词解析(queryParser)出查询条件query(Termquery),利用搜索工具(indexSearcher)去索引库获取文档id,然后再根据文档id去文档信息库获取文档信息 Solr...),他配置的时怎样获取数据(查询语句、url等等)要读什么样的数据(关系数据库中的列、或者xml的域)、做什么样的处理(修改/添加/删除)等,Solr为这些数据数据创建索引并将数据保存为Document...stackoverflow.com/questions/51838282/correct-using-contentstreamdatasource-in-dih https://www.cnblogs.com
solr.TextField类似于Lucene中的TextField。可以配置用户自定义的分析器。...自定义fieldType使用中文分析器 配置中文分析器 配置步骤: 第一步:把IKAnalyzer2012FF_u1.jar添加到solr工程的lib库中。...配置自定义fieldtype 在schema.xml中添加如下内容: <!...管理页面,执行数据导入 索引库的查询 查询语法支持的参数 q:主查询条件。...把查询结果传递给页面。还需要参数回显。
solrj是solr的java客户端,用于访问solr索引库。它提供了添加、删除、查询、优化等功能。...> @Test public void createIndex() throws Exception { // 创建HttpSolrClient // 参数...SolrInputDocument doc = new SolrInputDocument(); doc.addField("id", "c001"); doc.addField("content_ik", "我爱传智播客...:表示solr服务的访问基础URL HttpSolrClient server = new HttpSolrClient("http://localhost:8080/solr"); // 创建查询对象...SolrQuery query = new SolrQuery(); // 设置查询条件 query.setQuery("*:*"); // 通过server查询,并返回结果 QueryResponse
领取专属 10元无门槛券
手把手带您无忧上云