我使用Solr来索引我的数据。
通过Solr的UI,我在Schema窗口中添加了两个字段:word,messageid
我做了以下查询后发帖:
curl -X POST -H "Content-Type: application/json" 'http://localhost:8983/solr/messenger/update.json/docs' --data-binary '{"word":"hello","messageid":"23523}'
我收到了以下JSON:
{
"responseHeader": {
"status": 0,
"QTime": 55
}
}
当我进入API中的查询窗口并执行不带参数的查询时,我得到以下JSON:
{
{
"responseHeader": {
"status": 0,
"QTime": 0,
"params": {
"q": "*:*",
"indent": "on",
"wt": "json",
"_": "1488911768817"
}
},
"response": {
"numFound": 1,
"start": 0,
"docs": [
{
"id": "92db6722-d10d-447a-b5b1-13ad9b70b3e2",
"_src_": "{\"word\":\"hello\",\"messageid\":\"23523\"}",
"_version_": 1561232739042066432
}
}
}
}
我的JSON不应该更像下一个吗?:
//More Code
"response": {
"numFound": 1,
"start": 0,
"docs": [
{
"id": "92db6722-d10d-447a-b5b1-13ad9b70b3e2",
"word": "hello",
"messageid": "23523",
"_version_": 1561232739042066432
}
//More Code
为了以后能够通过以下选项使用参数进行过滤?:
答案 0 :(得分:1)
事实证明,您正在使用所谓的自定义JSON索引'描述here的方法。您可以按照wiki中的描述进行调整,以便提取所需的字段。以下摘录供您参考:
split :定义将输入JSON拆分为多个Solr文档的路径,如果单个JSON文件中有多个文档,则需要该路径。如果整个JSON生成单个solr文档,则路径必须为“/”。通过管道(|)示例分隔它们可以传递多个分割路径:split = / | / foo | / foo / bar。如果一条路径是另一条路径的子路径,它们将自动成为子文档
f :这是一个多值映射参数。参数的格式为target-field-name:json-path。 json路径是必需的。 target-field-name是Solr文档字段名称,是可选的。如果未指定,则会自动从输入JSON派生。默认目标字段名称是字段的完全限定名称。可以在此处使用通配符,有关详细信息,请参阅下面的通配符部分。
但我建议使用标准方法来索引文档,这是来自here的旧的list.ForEach(tb => file.Write(tb.Text));
file.WriteLine();
命令。所以看起来更像是:
update