SOLR dataimporthandlersは、JDBCデータソースの親と子のプロパティを提供します。 URLdatasourceの親子関係を追加する方法。 私のサンプルデータセット:URLdatasourceのdataimporthandlerのSOLR子ドキュメント定義
<name>ABC</name>
<createdAt>1512016450886</createdAt>
<createdBy>XYZ</createdBy>
<attributes>
<attribute>
<name>access</name>
<value>public</value>
</attribute>
<attribute>
<name>owner</name>
<value>ABC</value>
</attribute>
<attribute>
<name>url</name>
<value>planning</value>
</attribute>
</attributes>
し、必要なインデックス付きデータ出力:
{
"name": "ABC",
"createdAt": "1512016450886",
"createdBy": "XYZ",
"Attributes": [
{
"name": "access",
"value": "public"
},
{
"name": "owner",
"value": "ABC"
},
{
"name": "url",
"value": "planning"
}
]
}
サンプルデータの設定:
<dataConfig>
<dataSource type="URLDataSource"/>
<document>
<entity name="sample"
url="http://host:port/api/sample_api.xml"
processor="XPathEntityProcessor"
forEach="/hash/name">
<field column="id" name="id" xpath="/hash/name"/>
<field column="createdBy" name="createdBy" xpath="/hash/createdBy"/>
<field column="createdAt" name="createdAt" xpath="/hash/createdAt"/>
<field column="attributes" name="attributes" xpath="/hash/attributes"/>
<field column="attributes.name" name="attributes.name" xpath="/hash/attributes/attribute/name"/>
<field column="attributes.value" name="attributes.value" xpath="/hash/attributes/attribute/value"/>
</entity>
</document>
</dataConfig>
応答は次のとおりです。
{ "名": "ABC" 、 "createdAt": "1512016450886"、 "cr 「public」、「ABC」、「planning」]
「属性」:「属性」:「アクセス」、「所有者」、「URL」」 「attributes.value」:私は、この新しいデータ-config.xmlのを試してみました:
<dataConfig>
<script>
<![CDATA[ id = 1;
function f1(row) { row.put('attr.attrId', (id ++).toFixed()); return row; } ]]>
</script>
<dataSource type="URLDataSource"/>
<document>
<entity name="entity"
url="http://abc:9090/api/sample_api.xml"
processor="XPathEntityProcessor"
forEach="/hash/entity/entity">
<field column="id" name="id" xpath="/hash/entity/entity/name"/>
<field column="createdBy" name="createdBy" xpath="/hash/entity/entity/createdBy"/>
<entity name="attributes"
url="http://abc:9090/api/sample_api.xml"
child="true"
processor="XPathEntityProcessor"
forEach="/hash/entity/entity/xyz/xyz" transformer="script:f1">
<field column="attr.attrId" name="attr.attrId"/>
<field column="attr.attrName" name="attr.attrName" xpath="/hash/entity/entity/xyz/xyz/name"/>
<field column="attr.attrValue" name="attr.attrValue" xpath="/hash/entity/entity/xyz/xyz/value"/>
</entity>
</entity>
</document>
</dataConfig>
しかし、イムsolr.log
[ x:xml_data] o.a.s.h.d.SolrWriter Error creating document : SolrInputDocument(fields: [createdBy=XYZ, id=ABC, _version_=1587094252791267328, _root_=ABC], children: [SolrInputDocument(fields: [attr.attrName=access, attr.attrId=1, attr.attrValue=public, _root_=ABC, _version_=1587094252791267328]), SolrInputDocument(fields: [attr.attrName=access12, attr.attrId=2, attr.attrValue=public12, _root_=ABC, _version_=1587094252791267328])])
org.apache.solr.common.SolrException: [doc=null] missing required field: id
at org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:265)
at org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:107)
at org.apache.solr.update.AddUpdateCommand$1.next(AddUpdateCommand.java:212)
at org.apache.solr.update.AddUpdateCommand$1.next(AddUpdateCommand.java:185)
at org.apache.lucene.index.DocumentsWriterPerThread.updateDocuments(DocumentsWriterPerThread.java:259)
at org.apache.lucene.index.DocumentsWriter.updateDocuments(DocumentsWriter.java:433)
at org.apache.lucene.index.IndexWriter.updateDocuments(IndexWriter.java:1384)
at org.apache.solr.update.DirectUpdateHandler2.updateDocument(DirectUpdateHandler2.java:920)
at org.apache.solr.update.DirectUpdateHandler2.updateDocOrDocValues(DirectUpdateHandler2.java:913)
at org.apache.solr.update.DirectUpdateHandler2.doNormalUpdate(DirectUpdateHandler2.java:302)
at org.apache.solr.update.DirectUpdateHandler2.addDoc0(DirectUpdateHandler2.java:239)
at org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:194)
at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:67)
at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)
at org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:979)
at org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:1192)
at org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:748)
at org.apache.solr.update.processor.LogUpdateProcessorFactory$LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:103)
at org.apache.solr.handler.dataimport.SolrWriter.upload(SolrWriter.java:80)
at org.apache.solr.handler.dataimport.DataImportHandler$1.upload(DataImportHandler.java:254)
at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:526)
at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:414)
at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:329)
at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:232)
at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:415)
at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:474)
at org.apache.solr.handler.dataimport.DataImporter.lambda$runAsync$0(DataImporter.java:457)
at java.lang.Thread.run(Thread.java:748)
ので、あなたは何をしようとしたのですか?あなたのデータ設定は何ですか? – Mysterion
質問の本文にデータ設定を追加してください – Mysterion
私はこのオプションも試しました。 ..これは何も返しません。 –
Triveni