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

时间:2017-02-27 10:15:29

标签: solr dih

我是SOLR的新手,我正在尝试使用SOLR索引oracle数据库查询结果。我也编写了config.xml并在schema.xml中添加了索引。

我的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查询响应。

1 个答案:

答案 0 :(得分:0)

如果你使用Solrj

JSONArray jArray = new JSONArray();

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

&GT;

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