solr 常用命令

我的solr是4.10.3, 因此不是最新的版本。原因是需要与nutch兼容。

 

启动solr:
bin/solr start -e cloud -noprompt
搜索:
curl “http://localhost:8983/solr/collection1/select?wt=json&indent=true&q=perl”
搜索指定域(filed)
curl “http://localhost:8983/solr/gettingstarted/select?wt=json&indent=true&q=title:perl”

添加文件到solr:
java -jar post.jar <options>
需要实现找到post.jar 的位置,对我而言,./node1/exampledocs/post.jar , 在同一个目录下可以找到post.sh , 通过查看post.sh知道其调用了update页面。
简单的,假设文件的内容为:

<add>        

<doc>        

  <field name="id">localhost-sample</field>      

  <field name="url">localhost-sample</field>         

  <field name="title">mytest</field>         

</doc>       

</add>


那么可以用 ./post.sh mydoc.xml , 既可以提交这个文档到solr。通过solr的管理页面可以看到检索的页面多出一个就对了。

连续提交两次这个文件,可以看到多出了两个文件。这个并不是我们想要的。
通过curl “http://localhost:8983/solr/collection1/select?wt=json&indent=true&q=title:mytest”
知,这两个文档的不同之处在于他们的”_version_” 不一样。以下是上面这个查询的输出:


{

  “responseHeader”:{

    “status”:0,

    “QTime”:3,

    “params”:{

      “indent”:”true”,

      “q”:”title:mytest”,

      “wt”:”json”}},

  “response”:{“numFound”:2,”start”:0,”docs”:[

      {

        “id”:”localhost-sample”,

        “url”:”localhost-sample”,

        “title”:[“mytest”],

        “_version_”:1498492591733211136},

      {

        “id”:”localhost-sample”,

        “url”:”localhost-sample”,

        “title”:[“mytest”],

        “_version_”:1498505340174467072}]

  }}

下面看看改怎样删除其中的一个文档。
通过下面这个命令可以查看其使用方法:


java -jar ../../node1/exampledocs/post.jar -h
Examples:

  java -jar post.jar *.xml

  java -Ddata=args  -jar post.jar ‘42‘

  java -Ddata=stdin -jar post.jar < hd.xml
  java -Ddata=web -jar post.jar http://example.com/
  java -Dtype=text/csv -jar post.jar *.csv
  java -Dtype=application/json -jar post.jar *.json
  java -Durl=http://localhost:8983/solr/update/extract -Dparams=literal.id=a -Dtype=application/pdf -jar post.jar a.pdf
  java -Dauto -jar post.jar *
  java -Dauto -Drecursive -jar post.jar afolder
  java -Dauto -Dfiletypes=ppt,html -jar post.jar afolder

下面的命令 java  -Ddata=stdin -jar ../../node1/exampledocs/post.jar < mydel.xml 运行正常,没有报什么错误,但并没有把这两个文档从solr中删除,其中mydel.xml 的内容为 “<delete><id>localhost-sample</id></delete>” 需要知道为什么。 google的结果是,如果要从索引中删除这些文档,可以用下面的命令: curl “http://localhost:8983/solr/update?stream.body=<delete><query>id:localhost-sample</query></delete>&commit=true” 然后在查询,可以发现这个文档已经被删除了。 然后在solr的admin页面中可以看到maxDoc数字没有变,但是numDoc已经减少了,说明删除成功了。 要在搜索返回的结果中指定返回的域,可以用fl参数,比如只返回title域: curl “http://localhost:8983/solr/collection1/select?wt=json&indent=true&q=title:mytest&fl=title



本文地址: http://www.bagualu.net/wordpress/archives/4364 转载请注明




发表评论

电子邮件地址不会被公开。 必填项已用*标注