2017-03-07 91 views
0

我使用Solr來索引我的數據。Solr返回的JSON

通過Solr的UI我說,在架構窗口,兩個字段:字,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
過濾

事實證明,您使用的是所謂的「自定義JSON索引」方法,其描述爲here。您可以按照Wiki中的描述來調整它,以便提取所需的字段。下面是摘錄,供您參考:

分裂:定義在其中輸入JSON分成多個Solr的文件,如果你有一個JSON文件多個文件需要的路徑。如果整個JSON生成一個solr文檔,則路徑必須是「/」。可以通過使用管道(|)示例將它們分開來傳遞多個拆分路徑:split =/|/foo |/foo/bar。如果一條路徑是另一條路徑的子路徑,則它們自動成爲子文檔

f:這是一個多值映射參數。參數的格式是target-field-name:json-path。 json路徑是必需的。目標字段名稱是Solr文檔字段名稱,並且是可選的。如果未指定,則它將自動從輸入JSON派生。默認目標字段名稱是該字段的完全限定名稱。這裏可以使用通配符,更多信息請參見下面的通配符部分。

但我會建議使用索引文件的標準方法,這是舊的好update命令here。所以它看起來更像:

curl 'http://localhost:8983/solr/messenger/update?commit=true' --data-binary '{"word":"hello","messageid":"23523}' -H 'Content-type:application/json'