设为首页 收藏本站
查看: 842|回复: 0

[经验分享] 使用cvs更新solr索引

[复制链接]

尚未签到

发表于 2016-12-15 09:15:29 | 显示全部楼层 |阅读模式
使用cvs更新solr索引
Solr接受cvs的格式,进行索引。并且支持multi-valued你也可能在语法感兴趣的基于XML更新指令。
 

要求
Solr1.2是最早支持cvs格式更新索引的版本。
CVSrequest handler需要在solrconfig.xml中配置,默认已经在solrconfig.xml的配置文件中存在了。

  <!-- CSV update handler, loaded on demand -->

  <requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy">

  </requestHandler>



solr4.0中,CVS被用在标准的UpdateRequestHandler中。

  <requestHandler name="/update" class="solr.UpdateRequestHandler"/>

请注意,需要包括的内容类型:Content-type:application/csv 或则Content-type:text/csv
 
  上传CSV文件的方法
CVS是通过/solr/update/csv 将文件上传到solr服务器。
 

例子
有一个样例CSV文件的例子/ exampledocs / books.csv可以用来添加文件到Solr服务器实例。
例子使用HTTP-POST的方式通过网络将CVS文件发送到solr服务器。

cd example/exampledocs
curl http://localhost:8983/solr/update/csv --data-binary @books.csv -H 'Content-type:text/plain; charset=utf-8'

上传一个本地CSV文件可以比在网络上通过HTTP发送更有效。此方法工作,必须远程流是启用的。看到xml下面的行,改变它的enableremotestreaming =“true”,并重新启动Solr

  <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" />

以下的请求会导致Solr直接读取输入文件:

curl http://localhost:8983/solr/update/csv?stream.file=exampledocs/books.csv&stream.contentType=text/plain;charset=utf-8
#NOTE: The full path, or a path relative to the CWD of the running solr server must be used.


参数
一些参数可以在每一个领域的基础上通过 f.<fieldname>.param=value
例如:CSV文件有多值字段(S)是由不同的分离器分离(S),然后他们可以分泰德基于下列额外的参数传递到 f.<fieldname>.split=true&f.<fieldname>.separator=<separator>或其他方式你可以有多值的域部分相同的CSV不同分离器及可更新,Solr索引基于以上语法。

分离器
指定作为字段分隔符的字符。默认是分离器=

header
如果第一行的CSV输入包含字段或列名称。默认的header=true如果字段名的参数是不存在的,这些字段添加文件的索引中也会被使用。

fieldnames
指定要添加文件时使用Solr索引以逗号分隔的字段名列表。如果CSV输入已经有一个标题,名称指定此参数将覆盖。
例如:fieldnames=id,name,category

skip
一个以逗号分隔的字段名列表输入中跳过。另一个跳过的方法是指定它的名字作为字段名长度为一零的字符串。
例子:

fieldnames=id,name,category&skip=name

跳过name字段,相当于

fieldnames=id,,category


skipLines
指定要丢弃CSV数据开始之前输入流中的行数(包括标题,如果存在的话)。默认是skiplines = 0

trim
如果true删除前导和尾随空白值。CSV分析已经忽略前导空白默认情况下,但可能有结尾的空格,或可能有空格,被引用,因此不能删除。这可能是指定的全局,或在每一个领域的基础。默认的是trim=false
 
  encapsulator
字符选择用来包围值保存如CSV分隔或空白字符,本标准的CSV格式处理封装器本身出现在一个封装的价值倍增的封装器。
在封装值引号CSV示例:

100,"this is a ""quoted"" string inside an encapsulated value"

默认的 encapsulator="
 
  keepEmpty
指定默认的index为空的值值。这可能是指定的全局,或在每一个领域的基础。默认的是keepempty = false
 
  literal
所有文件添加固定的字段名称/值。
例如:添加一个数据源字段值等于每个文档的索引从CSV产品

literal.datasource=products

 
  map
指定一个值与另一个之间的映射。在结肠的LHS的字符串将在右边的字符串替换。此参数可以在每一个领域的基础上在全局或指定。
例如:在每一个地方使用Absolutely替换true

map=Absolutely:true

例如:删除在字段foo中包括RemoveMe的值

f.foo.map=RemoveMe:&f.foo.keepEmpty=false

  split
如果是true,该字段值使用另一个CSV解析器被分隔成多个值。CSV解析规则如分离器和封装器,可以在指定参数。
  例如:在下面的输入

id,tags
101,"movie,spiderman,action"

  为了索引成3个索引标签,并且solrmulti-valued 字段为tags,使用

f.tags.split=true

  例如:以下有标签领域的空间分离和封装器输入单引号

id,tags
101,movie 'spider man' action

索引3个单独的标签为多值字段称为“tags”方案,使用

f.tags.split=true&f.tags.separator=%20&f.tags.encapsulator='

任何分裂目标Solr领域应该多值。
 
  rowid
如果不为空,该文件在传入的参数名称字段名称应增加和当前行/ rowid添加新字段的值。如果您的CSV没有唯一的ID,使用cvs的行号也是可以的。如果你只是想指数在正是在原始的CSV文件行来自也有用。
例如:

curl "http://localhost:8983/solr/update?rowid=id" --data-binary @1987.csv -H 'Content-type:application/csv; charset=utf-8'

 
  rowidOffset
在与rowid参数一起,ROWID被添加到field之前,这个整数将被添加到ROWID
 
  overwrite
如果ture(默认的是true),检查并覆盖重复的文件,基于solrschema中定义的唯一ID,如果你知道你的索引文件不包含任何副本,然后你想相当大的速度,设置overwrite=false

commit
提交更改后在这一要求所有记录都被索引。默认是commit=false以避免频繁的潜在性能的影响有。
  Disadvantages
有没有办法提供文档或字段索引时提高CSV格式,但是许多指标不利用这一特征。因为updatecsv处理函数在一个较低的水平比dataimporthandlerDIH),内置的功能,但提供了诸如变压器,entityprocessors和进口的命令不可用时,使用updatecsv也就是说,额外的考虑,应在CSV文件提供的数据格式以及它如何被你的Solr schema充满。
不像DIH,没有一个可查询的方式在执行后知道状态。

Tab-delimited importing

制表符分隔的导入
不要让格式的名字愚弄你,该程序可以加载您的制表符分隔的文件,甚至把斜杠进行转义而不是CSV封装。
例如,一个可以把MySQL表制表符分隔文件

SELECT * INTO OUTFILE '/tmp/result.text' FROM mytable;

此文件可以通过设置隔板选项卡导入Solr(占09)和逃避反斜杠(% 5C

curl 'http://localhost:8983/solr/update/csv?commit=true&separator=%09&escape=\&stream.file=/tmp/result.text'

参考网址:
http://wiki.apache.org/solr/UpdateCSV
 
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-314531-1-1.html 上篇帖子: solr对数据库进行索引 下篇帖子: solr build索引性能
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表