/ / Apache Solr Impossibile archiviare i dati JSON nidificati - java, json, apache, solr, solr6

Apache Solr Impossibile memorizzare i dati JSON nidificati: java, json, apache, solr, solr6

Sto provando a caricare i seguenti dati in un nucleo SOLR (6.6) esistente usando la sezione di caricamento del documento

   {
"id": "1234",
"nationality":"India",
"phonenumber":"232323",
"personname":"babu rao",
"paid":"credi card",
"status":"success",
"access" :[
{"port":"port1","gate":"Gate1"}
],
"approved_by":[
{"name":"appr1","date":"2006-11-30"},
{"name":"appr2","date":"2006-11-30"}
]
}

Il mio schema per questo articolo è

 <field name="created_date" type="tdate" indexed="true" stored="true" />
<field name="passType" type="string" indexed="true" stored="true" />
<field name="duration" type="int" indexed="true" stored="true" />
<field name="nationality" type="string" indexed="true" stored="true" />
<field name="phonenumber" type="string" indexed="true" stored="true" />
<field name="personname" type="string" indexed="true" stored="true" />
<field name="paid" type="string" indexed="true" stored="true" />
<field name="passamount" type="float" indexed="true" stored="true" />
<field name="status" type="string" indexed="true" stored="true" />
<field name="approved_by" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="approved_by.name" type="string" indexed="true" stored="true" />
<field name="approved_by.date" type="tdate" indexed="true" stored="true" />
<field name="access" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="access.port" type="string" indexed="true" stored="true" />
<field name="access.gate" type="string" indexed="true" stored="true" />

Ottengo il seguente errore

Error parsing JSON field value. Unexpected OBJECT_START at [177],
field=access

Richiedi il tuo aiuto per risolverlo.

risposte:

1 per risposta № 1

_childDocuments_ la chiave deve indicare i documenti nidificati in JSON. Ho aggiornato il documento ora sarà indicizzato.

{
"id": "1234",
"nationality":"India",
"phonenumber":"232323",
"personname":"babu rao",
"paid":"credi card",
"status":"success",
"_childDocuments_" :[
{"id":456,"port":"port1","gate":"Gate1"},
{"id":786,"name":"appr1","date":"2006-11-30"},
{"id":232,"name":"appr2","date":"2006-11-30"}
]
}

Inoltre è necessario modificare lo schema.xml.
[Schema.xml]

<field name="created_date" type="tdate" indexed="true" stored="true" />
<field name="passType" type="string" indexed="true" stored="true" />
<field name="duration" type="int" indexed="true" stored="true" />
<field name="nationality" type="string" indexed="true" stored="true" />
<field name="phonenumber" type="string" indexed="true" stored="true" />
<field name="personname" type="string" indexed="true" stored="true" />
<field name="paid" type="string" indexed="true" stored="true" />
<field name="passamount" type="float" indexed="true" stored="true" />
<field name="status" type="string" indexed="true" stored="true" />
<field name="name" type="string" indexed="true" stored="true" />
<field name="date" type="tdate" indexed="true" stored="true" />
<field name="port" type="string" indexed="true" stored="true" />
<field name="gate" type="string" indexed="true" stored="true" />

Per ulteriori informazioni è possibile consultare questo articolo di Yonik: - http://yonik.com/solr-nested-objects/