Solr Dataimport来自PostgreSQL的嵌套实体

问题描述

我想用dataimporthandler创建嵌套实体。
我使用Solr 8.6,Postgress 12,openjdk-11。

我的配置(schema.xml)如下:

<schema name="products" version="1.5">

    <field name="_version_" type="long" indexed="true" stored="true"/>
    <field name="_root_" type="int" indexed="true" stored="false"/>

    <uniqueKey>id</uniqueKey>

    <field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false"/>
    <field name="price" type="float" indexed="true" required="true" stored="true"/>
    <field name="categories" type="int" indexed="false" stored="true" required="true" multiValued="true"/>

    <field name="pictures" type="string" indexed="true" stored="true" multiValued="true"/>
    <field name="pid" type="int" indexed="true" stored="true" />
    <field name="previewUrl " type="string" indexed="true" stored="true" />
</schema>

data-config.xml

<dataConfig>
    <dataSource type="JdbcDataSource"
            driver="org.postgresql.Driver"
            url="jdbc:postgresql://${db.host}/myDB"
            user="user"
            password="myPassword"
    />

    <document>
        <entity name="products"
            pk="id"
            transformer="DateFormatTransformer"
            query="SELECT * from products"
            deltaQuery="SELECT id FROM products WHERE updated > '${dataimporter.last_index_time}'::timestamp"
            deltaimportQuery="SELECT * FROM products WHERE id=${dataimporter.delta.id}"
        />

            <field column="id" name="id"/>
            <field column="price" name="price"/>

            <entity name="categories"
                query="SELECT category_id FROM product_category WHERE product_id='${products.id}'">
                <field column="category_id" name="categories"/>
            </entity>

            <entity name="pictures"
                child="true"
                pk="pid"
                query="SELECT * FROM pictures WHERE product_id='${products.id}'"
            >
                <field column="id" name="pid"/>
                <field column="preview_url" name="previewUrl"/>
            </entity>
        </entity>
    </document>
</dataConfig>

这是我期望的结果:

[
  {
    "id":1,"price": 10,"categories": [1,2]
    "pictures": [
        {
           "pid":1,"previewUrl":"/url"
        },{
           "pid":2,]
    "_version_":1674819829308063744
  }
]

但是出现以下错误

org.apache.solr.common.solrException: [doc=null] missing required field: price

我在做什么错了?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)