`
韩悠悠
  • 浏览: 828001 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用json更新solr索引

    博客分类:
  • solr
 
阅读更多

使用json更新solr索引

Solr接受通过json的格式提交索引。

 

要求

Solr3.1是最早支持json格式提交索引的。

Json请求要求必须配置solrconfig.xml,在example例子中solrconfig.xml已经存在配置了。

 

  <requestHandler name="/update/json" class="solr.JsonUpdateRequestHandler"/>

solr4.0,JSON支持包括标准updaterequesthandler

 

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

说明:request请求应该包括Content-type:application/json或者Content-type:text/json

 

发送JSON方法

JSON格式的更新请求可以通过/solr/update/json被发送到Sol。所有的正常方法上传内容的支持。

 

例子

有一个示例JSON文件的例子/ exampledocs / json,可用于添加文件到Solr服务器实例。

例子使用HTTP-POST 的方式提交JSON格式数据。

 

cd example/exampledocs
curl 'http://localhost:8983/solr/update/json?commit=true' --data-binary @books.json -H 'Content-type:application/json'

注意,我们添加了“commit =trueURL,文件将立即搜索。

你现在应该能够查询到新添加的文件,http://localhost:8983/solr/select?q=name:monsters&wt=json&indent=true

 

{
  "responseHeader":{
    "status":0,
    "QTime":2,
    "params":{
      "indent":"true",
      "wt":"json",
      "q":"title:monsters"}},
  "response":{"numFound":1,"start":0,"docs":[
      {
        "id":"978-1423103349",
        "author":"Rick Riordan",
        "series_t":"Percy Jackson and the Olympians",
        "sequence_i":2,
        "genre_s":"fantasy",
        "inStock":true,
        "price":6.49,
        "pages_i":304,
        "name":[
          "The Sea of Monsters"],
        "cat":["book","paperback"]}]
  }}

 

它从测试的目的和脚本命令行指定JSON文件也容易(假设一个UNIX环境):

 

URL=http://localhost:8983/solr/update/json
curl $URL -H 'Content-type:application/json' -d '
[
  {
    "id" : "MyTestDocument",
    "title" : "This is just a test"
  }
]'
curl "$URL?commit=true"

这是一个简单的添加一次多个文件的例子:

curl http://localhost:8983/solr/update/json -H 'Content-type:application/json' -d '
[
 {"id" : "TestDoc1", "title" : "test1"},
 {"id" : "TestDoc2", "title" : "another test"}
]'

 

更新命令

JSON更新处理程序接受所有的更新命令,XML更新处理程序支持的类型,通过一个简单的映射。请在命令的详细描述XML文档的更新。【XML格式更新索引.doc

多个命令可以被包含在一个message。下面是一个示例JSON更新消息显示多个更新命令(注:评论是不合法的JSON,但重复的名字是合法的)

 

{ 
"add": {
  "doc": {
    "id": "DOC1",
    "my_boosted_field": {        /* use a map with boost/value for a boosted field */
      "boost": 2.3,
      "value": "test"
    },
    "my_multivalued_field": [ "aaa", "bbb" ]   /* use an array for a multi-valued field */
  }
},
"add": {
  "commitWithin": 5000,          /* commit this document within 5 seconds */
  "overwrite": false,            /* don't check for existing documents with the same uniqueKey */
  "boost": 3.45,                 /* a document boost */
  "doc": {
    "f1": "v1",
    "f1": "v2"
  }
},
 
"commit": {},
"optimize": { "waitFlush":false, "waitSearcher":false },
 
"delete": { "id":"ID" },                               /* delete by ID */
"delete": { "query":"QUERY" }                          /* delete by query */
"delete": { "query":"QUERY", 'commitWithin':'500' }    /* delete by query, commit within 500ms */
}

 

正如在其他更新的处理程序,如提交的,commitwithin,优化参数,并覆盖可不是消息的正文中指定的URL

 

Solr 3.1 Example

Solr 3.2是支持JSONObject语法数组的第一个版本,所以在Solr 3.1需要使用重复的名称(添加标签)添加一次多个文件。有重复的名称在JSON是合法的。的例子

curl http://localhost:8983/solr/update/json -H 'Content-type:application/json' -d '
{
 "add": {"doc": {"id" : "TestDoc1", "title" : "test1"} },
 "add": {"doc": {"id" : "TestDoc2", "title" : "another test"} }
}'

 

Solr 4.0 Example

原子更新

Solr4.0支持原子更新

curl http://localhost:8983/solr/update -H 'Content-type:application/json' -d '
[
 {
  "id"        : "TestDoc1",
  "title"     : {"set":"test1"},
  "revision"  : {"inc":3},
  "publisher" : {"add":"TestPublisher"}
 },
 {
  "id"        : "TestDoc2",
  "publisher" : {"add":"TestPublisher"}
 }
]'

 

乐观并发原子更新

 

Solr 4支持带有一个建设中的_version_场是由Solr自动添加,可以让你在执行原子更新optimistic_concurrency。的例子:

curl http://localhost:8983/solr/update -H 'Content-type:application/json' -d '
[
 {
  "id"        : "TestDoc1",
  "title"     : {"set":"test1"},
  "revision"  : {"inc":3},
  "publisher" : {"add":"TestPublisher"}
  "_version_" : {12345}
 }
]'

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

 

 

 

分享到:
评论

相关推荐

    Solr高级搜索+tomcat整合服务器

    索引:客户端(可以是浏览器可以是java程序)发送post请求到solr服务器,发给solr服务器一个文档(xml、json),就可以进行一个添加索引删除索引、修改索引的操作。 搜索:客户端(可以是浏览器可以是java程序)发送...

    riak_json:Riak Json 是一个基于 JSON 的文档和查询接口,基于 Riak 构建并由 Solr 索引

    Riak Json 是一个基于 JSON 的文档和查询接口,基于 Riak 构建并由 Solr 索引。 有关版本/功能日志,请参阅 。 安装 从一个流浪盒子 如果您熟悉 Vagrant,则可以下载一个预构建的 Ubuntu 12.04 LTS VM,其中预安装并...

    whyte-dwarf:自定义搜寻器和自动Solr索引更新器

    为何矮人自定义搜寻器和自动Solr索引更新器危险代码:目前未经过消毒的输入要求: crawler_lists必须可写crawler_json必须可写编辑config / config.php以获取Solr设置和抓取延迟使用表单来设置您的爬网参数。...

    跟益达学Solr5之批量索引JSON数据

    NULL 博文链接:https://iamyida.iteye.com/blog/2215711

    solr 企业搜索引擎教程

    某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此 外,很多 Lucene 工具(如 Nutch、 Luke)也可以使用 Solr 创建的索引 Solr 的特性包括:  高级的全文搜索功能  专为高通量...

    已编译版本solr-8.11.2.tgz

    solr查询该集合也是通过http收到一个xml/json响应来实现。他的主要特性包括:高效,灵活的缓存功能,垂直搜索功能,高亮下试搜索结果,通过索引复制来提高可用性,提供一套强大的data schema 来定义字段,类型和设置...

    开源企业搜索引擎SOLR的应用教程

    Solr是一个基于Lucene...通过对 Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用 Solr 创建的索引。

    apache solr1.3.0开发包源码及文档

    Apache Solr 1.3.0发布,Apache Solr是一个性能强大的,基于 Lucene 的全文搜索的 开源企业级搜索服务器,拥有XML/HTTP,JSON APIs,hit highlighting, faceted search, caching, replication,web管理界面等很多功能...

    IndexConsole:将数据从json文件索引到Solr Core

    IndexConsole:将数据从json文件索引到Solr Core

    solr部署技术文档

    solr是一个基于lucene的全文检索引擎。他包括了全文检索,命中高亮,准实时搜索...Solr的全文索引和搜索其核心使用了Lucene Java搜索库,并具有类似REST的HTTP / XML和JSON的API,可以很容易地从几乎任何编程语言使用.

    solr-8、solr-8.11、solr-8.11.2.tgz、solr-8.11.2.zip

    Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML、JSON等...

    solrdump:使用光标有效地导出SOLR文档

    自述文件从SOLR索引将文档快速,简单地从命令行导出为JSON。 向SOLR请求大量文档可能会导致深度分页问题: 当您希望从Solr中获取大量排序结果以馈入外部系统时,对于start或rows参数使用非常大的值可能会非常低效。 ...

    solrdump:旨在从 Solr 读取原始索引的 Clojure 库

    较新版本的 Solr 内置了转储处理程序,但它仅用于导出原始 Lucene 索引,而不是 JSON 格式。 您可以使用安装 Lucence jar 并使用 Java API 操作原始索引。 一种天真的方法是编写 Java,但享受浸入新技术的感觉。 ...

    中文搜索引擎zh-solr-se.zip

    结合中文文本特点,单独定制开发的一款搜索引擎框架 框架实现了multi-core共享solr,独立的索引创建 部署,支持多种格式数据接口,基本搜索接口 搜索结果多维度评价等功能 本框架中几个子工程需要使用maven2打包 编译。...

    apache solr1.3.0所有最新开发包及源码及文档

    Apache Solr组很高兴地宣布Solr 1.3.0开始提供下载使用。此版本继续对功能有所加强,同时修改了之前的一些bug,包括: ——分布式搜索性能 ——许多Lucene和其他性能的改进 ——支持在单个部署中的多级索引 ——...

    git-to-solr:将git历史记录索引到Solr存储库中

    将git历史记录索引到Solr存储库中。 将提交的内容(文件已更改等)表示为嵌套文档。 经过Solr 4.9测试。 受和启发。 通过从Solr发行版的示例目录运行java -Dsolr.solr.home = &lt;project&gt; / solr -jar start.jar来...

    Data-Visualization:Apache Solr D3.js

    Apache Solr 索引是根据上游 JSON 文件构建的,这些文件表示从主要服务于墨西哥和南美国家的上游附属站点收集和抓取的招聘信息。 D3 用于在地图上绘制数据,以回答一组挑战问题,这些问题集中在 Solr 在后端查询的...

    solr-tools:Solr 的命令行工具

    用于将整个 Solr 索引从 4.x 或 5.x 升级到 6.x 的 Bash 脚本,以便它可以被 Solr6.x 或 Solr 7.x 读取。 请参阅 Solr密码哈希 为security.json生成密码哈希的简单命令行工具 建造 mvn package 用法: java -jar...

    Solr全攻略

    Solr可以使用Zookeeper实现简易分片和复制,统一配置。为了提高查询速度和处理更多的文档,Solr可以通过索引分片来实现分布式查询。为了提高吞吐量和容错能力,可以为每个索引分片增加副本,同时,把所有的索引复制...

Global site tag (gtag.js) - Google Analytics