java - 部分更新(原子索引)SolrJ - 慢
问题描述
我有一个 Solr 数据库,其中包含大约 250,000 条记录,其中包含大约 8 个字段。我正在尝试向索引添加一个新字段,该字段具有可搜索的小描述。
下面是 Solr 中的字段。
下面是用于检查值是否不同以执行更新的 Java 代码。它基本上遍历我的 SQL 数据库中的 250,000 条记录,并对 Solr 执行差异检查。如果只有几条记录需要更新,此代码通常会在 5 分钟左右运行。
有 5500 个产品具有新的描述值,添加新字段值需要很多小时,到目前为止只完成了 1000 个。我的印象是原子更新被添加到数据库并在稍后被索引。感觉就像它正在尝试从源头索引每个新描述,也许这就是减慢速度的原因?
if (solrSearchDoc.getFieldValue("Prod_ShortDescription") != null){
if(!solrSearchDoc.getFieldValue("Prod_ShortDescription").equals(doc.getItemValueString("Prod_ShortDescription").trim())){
UpdateSolrRecord = true;
fieldModifier.put("set",doc.getItemValueString("Prod_ShortDescription").trim());
sdoc.addField("Prod_ShortDescription", fieldModifier);
updatedField = "Prod_ShortDescription";
}
}else{
UpdateSolrRecord = true;
fieldModifier.put("set",doc.getItemValueString("Prod_ShortDescription").trim());
sdoc.addField("Prod_ShortDescription", fieldModifier);
updatedField = "Prod_ShortDescription";
}
if(UpdateSolrRecord == true){
sdoc.addField("id",doc.getItemValueString("ID"));
solrUpdateDocs.add(sdoc);
if ((x % 100) == 0) {
solrServer.add(solrUpdateDocs);
solrServer.commit();
solrUpdateDocs.clear();
}
}
我想知道是否有人可以为我指出正确的方向,解释过程或提供一些最佳实践,以确保在向 Solr 添加新值时性能不会停止。有没有更好的批量更新方法或者我错过了什么?
可能还值得指出的是,我在控制台上遇到了很多这些错误。
org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException:来自http://127.0.0.1:8983/solr/prod_core的服务器错误:未构建建议器 03/06/2021 10:19:44 HTTP JVM :在 org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:665) 03/06/2021 10:19:44 HTTP JVM:在 org.apache.solr.client.solrj.impl。 HttpSolrClient.request(HttpSolrClient.java:265) 03/06/2021 10:19:44 HTTP JVM:在 org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:248)
非常感谢
解决方案
推荐阅读
- php - PHP 肥皂结果状态正常,但没有任何项目。SOAPUI 也提供状态和项目
- javascript - Alphavantage 的谷歌脚本给出了奇怪的结果
- java - 无法在 android studio 上启动应用程序是否显示 java.lang.NullPointerException:
- android - 向下滚动后如何自动隐藏状态栏?
- amazon-web-services - 如何检测用于登录的身份提供者?
- python - 如何修复只读文件系统错误python
- javascript - 如何在 SetTimeout 上禁用浏览器 CPU 节流?
- html - Safari 上的 Flexbox 错误
- svelte - 导入外部库,如 node.js 特殊语法
- c# - “IApplicationBuilder”不包含“UseWebAssemblyDebugging”的定义