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"));
感谢响应,我想我们可以修改的Java Solr的响应。但有什么办法可以修改config.xml文件,以便在查询后我们应该得到结构化的响应,即使有任何数量的客户端正在进行查询? –
有没有办法在服务器端做到这一点,我正在寻找一种可扩展的方式。这样多个客户可以在这里使用solr。 –