Solr 8.0.0增量导入添加/删除数据
我们有一个MySql数据库(新闻),它有以下字段——发布id、日期、姓名、货币、国家、到期日……等等 该数据库有超过1200000个条目。每天大约有200000多条新记录被添加,相同数量的记录被删除 posting_id是每个记录的唯一id 请帮我写一个delta导入脚本,这样索引文件每天都会根据MySql数据库(news)中的记录进行更新。如果在数据库(新闻)中找不到发布id,则会从solr索引文件中删除该id,并为具有新发布id的记录编制索引 下面的方法不起作用Solr 8.0.0增量导入添加/删除数据,solr,Solr,我们有一个MySql数据库(新闻),它有以下字段——发布id、日期、姓名、货币、国家、到期日……等等 该数据库有超过1200000个条目。每天大约有200000多条新记录被添加,相同数量的记录被删除 posting_id是每个记录的唯一id 请帮我写一个delta导入脚本,这样索引文件每天都会根据MySql数据库(news)中的记录进行更新。如果在数据库(新闻)中找不到发布id,则会从solr索引文件中删除该id,并为具有新发布id的记录编制索引 下面的方法不起作用 <dataSource
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
batchSize="-1"
autoReconnect="true"
socketTimeout="0"
connectTimeout="0"
url="jdbc:mysql://xxxx/livenews?zeroDateTimeBehavior=convertToNull"
user="admin"
password="admin"/>
<document>
<entity name="news"
pk="id"
query="select * from news"
deltaImportQuery="SELECT * from news WHERE id='${dih.delta.id}'"
deltaQuery="SELECT id FROM news WHERE updated_at > '${dih.last_index_time}'"
>
<field column="posting_id" name="posting_id"/>
<field column="date" name="date"/>
<field column="name" name="name"/>
<field column="currency" name="currency"/>
<field column="country" name="country"/>
<field column="expiry" name="expiry"/>
</entity>
</document>
</dataConfig>```
```
因此,请将其包装在一起
确保[SolrPath]/server/solr/[CoreName]/conf文件夹中有dataimport.properties文件,并检查读/写权限。如果文件不存在,我认为创建它是安全的
此文件将包含每个实体的最后索引时间戳,例如:
> #Fri Apr 12 07:12:02 UTC 2019
> Conversations.last_index_time=2019-04-12 07\:11\:40
> ContentSites.last_index_time=2019-04-12 07\:11\:40
> last_index_time=2019-04-12 07\:11\:31
> Messages.last_index_time=2019-04-12 07\:11\:59
> LibraryItems.last_index_time=2019-04-12 07\:11\:41
> CalendarItems.last_index_time=2019-04-12 07\:11\:31
您的query/deltaImportQuery/deltaQuery看起来很不错。对于删除,您将丢失deletionPkQuery属性,该属性应获取已删除项目的id。因此,每个实体都需要一个新表,该表保存已删除项的ID。您可以使用应用程序代码填充该表,也可以在内容/项目表上设置触发器以自动填充删除表。因此,请将其包装在一起 确保[SolrPath]/server/solr/[CoreName]/conf文件夹中有dataimport.properties文件,并检查读/写权限。如果文件不存在,我认为创建它是安全的 此文件将包含每个实体的最后索引时间戳,例如:
> #Fri Apr 12 07:12:02 UTC 2019
> Conversations.last_index_time=2019-04-12 07\:11\:40
> ContentSites.last_index_time=2019-04-12 07\:11\:40
> last_index_time=2019-04-12 07\:11\:31
> Messages.last_index_time=2019-04-12 07\:11\:59
> LibraryItems.last_index_time=2019-04-12 07\:11\:41
> CalendarItems.last_index_time=2019-04-12 07\:11\:31
您的query/deltaImportQuery/deltaQuery看起来很不错。对于删除,您将丢失deletionPkQuery属性,该属性应获取已删除项目的id。因此,每个实体都需要一个新表,该表保存已删除项的ID。您可以用应用程序代码填充它,也可以在内容/项目表上设置触发器以自动填充删除表。您可以发布日志吗?要删除行,您需要有一个新表,其中所有已删除的ID都将重新显示。您可以通过使用触发器或其他方法来实现这一点。然后,您需要在另一个属性“deletedPkQuery”中使用该表的select查询。这对于Solr来说是非常新的。solr是否有任何同步脚本。Solr会自动检查MySql数据库,并根据主数据库中的更改对其进行索引
``警告false SimpleProperties Writer无法读取:dataimport.properties错误false EntityProcessorBase getNext()查询'select*from news'失败:org.apache.solr.handler.dataimport.DataImportHandler异常:java.sql.SQLException:结果集关闭后不允许操作``对于完整索引:使用查询属性,对于增量索引:将deltaImportQuery/deltaQuery与最后一个索引时间字段一起使用。这在您的代码片段中看起来确实不错。对于删除,您必须向solr提供已删除行的id(pk=“id”)。因此,您需要将它们存储在单独的表中。您可以通过应用程序代码填写此表,但对我来说,使用触发器似乎更容易。对于日志错误:检查solr/Module/conf文件夹中是否存在文件dataimport.properties。此文件保存最后一个索引变量。另请检查读/写权限据我所知,不存在同步脚本。另外,为了安排增量(增量)索引,您必须编写某种工具来调用url(例如通过curl)来触发索引。但对于其他人来说,solr确实是一个很棒的搜索服务器工具,只是缺少一些基本的东西,比如索引调度,它有一种奇怪的方式来提供它。一旦你习惯了,你就会爱上它:-)谢谢。创建了dataimport.properties文件。在所有记录的索引方面仍然存在问题
已打开此引用的票证,错误位于-[link],您可以发布日志吗?要删除行,您需要有一个新表,其中所有已删除的ID都将重新显示。您可以通过使用触发器或其他方法来实现这一点。然后,您需要在另一个属性“deletedPkQuery”中使用该表的select查询。这对于Solr来说是非常新的。solr是否有任何同步脚本。Solr会自动检查MySql数据库,并根据主数据库中的更改对其进行索引
``警告false SimpleProperties Writer无法读取:dataimport.properties错误false EntityProcessorBase getNext()查询'select*from news'失败:org.apache.solr.handler.dataimport.DataImportHandler异常:java.sql.SQLException:结果集关闭后不允许操作``对于完整索引:使用查询属性,对于增量索引:将deltaImportQuery/deltaQuery与最后一个索引时间字段一起使用。这在您的代码片段中看起来确实不错。对于删除,您必须向solr提供已删除行的id(pk=“id”)。因此,您需要将它们存储在单独的表中。您可以通过应用程序代码填写此表,但对我来说,使用触发器似乎更容易。对于日志错误:检查solr/Module/conf文件夹中是否存在文件dataimport.properties。此文件保存最后一个索引变量。另请检查读/写权限据我所知,不存在同步脚本。另外,为了安排增量(增量)索引,您必须编写某种工具来调用url(例如通过curl)来触发索引。但对于其他人来说,solr确实是一个很棒的搜索服务器工具,只是缺少一些基本的东西,比如索引调度,它有一种奇怪的方式来提供它。一旦你习惯了,你就会爱上它:-)谢谢。创建了dataimport.properties文件。在所有记录的索引方面仍然存在问题
已打开此引用的票证,错误位于-[link]谢谢。创建