Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr 8.0.0增量导入添加/删除数据_Solr - Fatal编程技术网

Solr 8.0.0增量导入添加/删除数据

Solr 8.0.0增量导入添加/删除数据,solr,Solr,我们有一个MySql数据库(新闻),它有以下字段——发布id、日期、姓名、货币、国家、到期日……等等 该数据库有超过1200000个条目。每天大约有200000多条新记录被添加,相同数量的记录被删除 posting_id是每个记录的唯一id 请帮我写一个delta导入脚本,这样索引文件每天都会根据MySql数据库(news)中的记录进行更新。如果在数据库(新闻)中找不到发布id,则会从solr索引文件中删除该id,并为具有新发布id的记录编制索引 下面的方法不起作用 <dataSource

我们有一个MySql数据库(新闻),它有以下字段——发布id、日期、姓名、货币、国家、到期日……等等

该数据库有超过1200000个条目。每天大约有200000多条新记录被添加,相同数量的记录被删除

posting_id是每个记录的唯一id

请帮我写一个delta导入脚本,这样索引文件每天都会根据MySql数据库(news)中的记录进行更新。如果在数据库(新闻)中找不到发布id,则会从solr索引文件中删除该id,并为具有新发布id的记录编制索引

下面的方法不起作用

<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]谢谢。创建