在solr中从JSON导入数据

时间:2013-02-05 10:26:39

标签: json solr

目前我在solr中使用XML文件。 我使用带有XPathentityProcessor的DataimportHandler索引xml文件的数据。

现在我想从json文件导入数据。

有什么例子吗?

此致 Sagar的

6 个答案:

答案 0 :(得分:7)

您需要的是

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

取自示例。

来源:https://wiki.apache.org/solr/UpdateJSON

答案 1 :(得分:5)

DataImportHandler不允许您使用JSON作为源。唯一的方法是使用可以本机处理JSON的Update Handler。但那必须是the JSON structure Solr expects(哈希数组或命令/哈希哈希)。

答案 2 :(得分:3)

如果您不想使用curl命令,可以直接在浏览器上触发命令并获得所需的结果:

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

将json文件放在/ example / exampledocs文件夹中。这是solr中的默认目录路径。 如果您使用的是java或php等,那么您可以使用几个类和方法,然后您不需要像上面那样提及整个命令。那就是您要求的内容吗?

答案 3 :(得分:1)

您还可以通过在curl命令的url中包含?commit = true语句来更新您的文档。

curl -X POST -H "Content-Type: application/json" -u "{usernamne}":"{password}" "https://your_host/solr/your_collection/update/json?commit=true" --data-binary @/path/to/your/data/your_data.json

答案 4 :(得分:0)

您可以使用REST api将数据发送到Solr。请使用此路径:

localhost:8983/solr/simple2/update?commit=true
//(simple2 is the core name and localhost:8983 is server path.)

你必须定义

:content_type => 'application/json'
请求头中的

。与它一起使用你可以使用post请求将json文件/数据发送到solr。

有关详细信息,请访问http://geekdirt.com/blog/indexing-in-solr-using-json-and-rest-apis/

答案 5 :(得分:0)

如果你想从json格式导入部分或整个集合,那么还有另一种选择。

我写了一个java工具:https://github.com/freedev/solr-import-export-json

这是一个使用SolrJ导入和导出Solr集合的Java应用程序。每个文档都必须是一个json对象,并且在导入的文件中,您必须有一个行列表,而每一行都是一个json对象。

{ "id": 1, "date": "20160101T00:00:00", "text": "some text" } 
{ "id": 2, "date": "20160102T00:00:00", "text": "some text" } 
{ "id": 3, "date": "20160103T00:00:00", "text": "some text" } 

我没有尝试使用嵌套文档,json文档的键应该是Solr字段的名称。