SOLR - DataImportHandler - 如何在一个json对象列表中映射多个对象

问题描述:

我是SOLR的新手,我试图使用SOLR为索引oracle数据库查询结果编制索引。我也编写了config.xml并在schema.xml中添加了索引。SOLR - DataImportHandler - 如何在一个json对象列表中映射多个对象

我在我的config.xml文件中有多个查询作为子实体(具有child = true)。许多查询都返回多行。比如我有一个实体

<entity name="example_subentity" child="true" query="SELECT A,B from table_temp"> 
    <field column="A" name="a" /> 
    <field column="B" name="b" /> 
</entity> 

返回输出

"response":{"numFound":1,"start":0,"docs":[ 
     { 
     "unique_key":"4493234234", 
     "_version_":1560479076226957312, 
     "_childDocuments_":[ 
     { 
      "a" : "value_a_1", 
      "b" : "value_b_1", 
     }, 
     { 
      "a" : "value_a_2", 
      "b" : "value_b_2", 
     }] 
     }]} 

什么,我想在这里实现的是,像

"_childDocuments_":[ 
     {"table_temp_response" :[ 
     { 
      "a" : "value_a_1", 
      "b" : "value_b_1", 
     }, 
     { 
      "a" : "value_a_2", 
      "b" : "value_b_2", 
     }] 
     }] 

任何人都可以指导我,我怎么可以使用DIH获得这种输出吗?

只是一个更新我正在寻找一个服务器端解决方案,我可以在客户端使用java或SOLRJ来做到这一点。但我有多个客户端正在使用SOLR查询响应。

如果使用Solrj

JSONArray jArray = new JSONArray(); 

     for (int i = 0; i < docList.size(); i++) { 
      JSONObject json = new JSONObject(docList.get(i)); 
      jArray.put(json); 
     } 

>

for (int i = 0; i < jArray.length(); i++) { 
      JSONObject obj = objs.getJSONObject(i); 
      obj.getString("a")); 
+0

感谢响应,我想我们可以修改的Java Solr的响应。但有什么办法可以修改config.xml文件,以便在查询后我们应该得到结构化的响应,即使有任何数量的客户端正在进行查询? –

+0

有没有办法在服务器端做到这一点,我正在寻找一种可扩展的方式。这样多个客户可以在这里使用solr。 –