9

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

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

有什么例子吗?

问候, 萨加尔

4

6 回答 6

9

你需要的是类似

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

取自示例。

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

于 2013-02-05T10:41:59.247 回答
5

DataImportHandler 不允许您使用 JSON 作为源。唯一的方法是使用可以本地处理 JSON 的更新处理程序。但这必须在Solr 期望的 JSON 结构中(散列数组或命令/散列的散列)。

于 2013-02-05T12:07:05.457 回答
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 等,那么您可以使用几个类和方法,然后您就不需要提及上面的整个命令。这是您要求的吗?

于 2013-02-27T08:07:53.307 回答
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
于 2016-01-14T18:14:51.940 回答
1

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

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

这是一个 java 应用程序,它使用SolrJ. 每个文档都必须是一个 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文档的key应该就是solr字段的名字。

于 2017-01-20T10:31:25.207 回答
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/

于 2015-08-05T14:43:13.743 回答