Solr返回JSON

时间:2017-03-07 18:46:45

标签: json curl post solr solr-query-syntax

我使用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

为了以后能够通过以下选项使用参数进行过滤?:

enter image description here

1 个答案:

答案 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