使用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 =true的URL,文件将立即搜索。
你现在应该能够查询到新添加的文件,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
相关推荐
"content": "这篇教程将教你如何使用Solr5批量索引JSON数据..." } ``` 3. 使用Post工具:Solr提供了一个名为`post.jar`的工具,可以方便地将JSON数据导入到索引中。在命令行中执行: ```bash java -Dc=...
本篇文章将深入探讨如何在Solr中配置中文解析器以及在导入数据到Solr索引库时所需关注的jar包。 首先,让我们来了解Solr中的中文解析器。在Solr中,解析器是处理文本输入的关键组件,它负责将原始文本转化为可搜索...
在技术选型中,Solr通常优于直接使用Lucene进行封装,因为它提供了更完善的解决方案,包括分布式搜索能力、接口封装和优化。对于那些需要处理大量数据并有搜索需求的门户社区或大型网站,Solr是一个理想的选项。它...
- **XML/JSON接口**:Solr使用HTTP协议和XML/JSON格式进行通信,方便与其他系统集成。 2. **Solr核心组件** - **Core**:Solr的基本工作单元,包含了配置信息、索引数据和处理请求的组件。 - **Schema**:定义了...
定时更新Solr索引的JAR包通常包含了一套实现定时任务的解决方案,例如使用 Quartz 或者 Spring Scheduler 等框架。这些工具可以帮助用户定期从数据库或其他数据源拉取新数据,更新到Solr索引中,确保索引与数据源...
11. **JSON支持**:Solr 8.x增强了对JSON的支持,允许用户使用JSON格式进行索引和查询,简化了与其他系统的集成。 12. **Cloud UI**:SolrCloud模式提供了一个Web界面,名为Cloud UI,用于监控集群状态、管理集合和...
Apache Solr 和 Lucene 是两个在全文搜索领域广泛使用的开源框架。它们的组合为构建高效、可扩展的搜索引擎提供了强大的工具。以下是对这两个组件及其在搜索模块设计实现中的关键知识点的详细说明: 1. **Apache ...
4. **实时索引**:Solr 支持实时或近实时的索引更新,确保数据的最新性。 5. **分布式搜索**:通过 SolrCloud 模式,可以实现跨多个节点的分布式搜索和处理,提高性能和可用性。 二、Solr 安装 1. **下载 Solr**:...
8. **实时索引**:Solr支持实时索引,一旦数据被添加或更新,索引会立即生效,无需重启服务。 9. **性能优化**:Solr可以通过调整缓存策略、使用NRT(Near Real Time)索引、优化查询执行计划等方式提高查询速度。 ...
"博客园手机版-solr 优化索引成 2段或N段.htm"文件探讨的是Solr索引优化策略,索引分段可以提高查询效率,尤其是在大量数据插入后进行合并索引时。通过合理地分段,可以平衡索引大小、查询速度和资源消耗。 "教你...
Solr 还支持实时更新和增量索引,保证了数据的实时性。 为了进一步优化搜索体验,Solr 支持 Faceting(层面搜索),可以用于统计不同属性的分布,帮助用户进行筛选。另外,通过使用 Highlighting(高亮显示),Solr...
- **创建索引**:客户端(可以是浏览器或 Java 程序)用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr 服务器根据 XML 文档添加、删除或更新索引。 - **搜索索引**:客户端用 GET 方法向 ...
Solr使用倒排索引技术,将文档中的每个词映射到包含该词的文档列表,大大提高了搜索速度。 2. **Core**:在Solr中,Core是一个独立的搜索实例,可以理解为数据库的概念。每个Core有自己的配置、索引和数据。你可以...
2. 实时搜索:Solr具有实时索引和查询的能力,一旦数据被更新,索引会立即反映出来,提供实时搜索体验。 3. 多格式支持:Solr支持多种数据格式,如JSON、XML、CSV等,便于数据导入和处理。 4. 高级搜索功能:Solr...
- **索引**:Solr使用Lucene来创建、维护和搜索索引。索引包括倒排索引,允许快速查找包含特定词汇的文档。 - **请求处理**:当请求到达时,Solr使用RequestHandler来解析和处理这些请求,返回结果。 - **配置**...
Solr支持多种数据源的导入,如CSV、XML、JSON等,通过数据导入工具(DataImportHandler, DIH)可以方便地将外部数据导入到Solr索引中。同时,Solr还支持实时更新和删除操作,使得搜索结果始终与数据源保持一致。 在...
文档详细讲解了如何使用客户端 API 或其他工具向 Solr 添加、更新或删除文档,以及如何处理索引数据的基本操作。 #### 使用客户端 API 索引 文档中提供了如何使用 Solr 的客户端 API 来索引文档的示例代码,适用于...