solr - Solr 从多值值中删除引号或立即更新
问题描述
我使用CURL命令将数据索引到我的SOLR核心,其中数据为CSV格式。命令是curl 'http://localhost:8983/solr/my_collection/update?commit=true' --data-binary @my_docs.csv -H 'Content-type:application/csv'
数据已成功导入,但我遇到了multiValued字段的问题。在我的.csv文件中,multiValued字段的值是这样的,"['parking','garden','spa']"
所以现在在我的 solr 核心上导入的数据看起来像下面格式的额外双引号。
"amenities": [
"['parking', 'garden', 'spa']"
^ ^
]
为了从我的multiValued字段中删除双引号,我从 SOLR ADMIN UI 部分的 Document 部分尝试了这种方式,并且我成功地使用这种 JSON 格式进行了 Atomic Update
{
"id":"2118506",
"amenities":{"set":["parking", "garden", "spa""]},
}
我知道我可以使用这种方式通过使用SET在 solr 上发送 curl 请求来原子更新所有索引文档,但此时对我来说很难,因为我已经索引了 20M 文档。
所以我现在只想知道有什么方法可以在查询时从multiValued字段中删除双引号,或者有任何更聪明的方法可以使用单个 curl 命令从字段值中删除双引号,而无需指定单个文档 ID
注意我现在很难从每个 csv 文件中删除双引号并尝试重新索引文档
解决方案
双引号的原因是因为您的值被索引为字符串 - 它没有被索引为多值字段。双引号在那里,因为这就是 JSON 表示我们正在谈论一个字符串的方式。
索引数据时需要更改此设置,索引 CSV 时可以使用一些特殊参数:
f.amenities.split=true&f.amenities.separator=%2C
这样,通过将字段中的值拆分为,
. 如果您的 CSV 文件中有一个实际的 JSON 列表,我强烈建议您从字段中删除[
,'
和]
作为预处理步骤。
推荐阅读
- javascript - Close list of Dropdown Menu
- java - 更新静态资源的特定 HTTP 响应标头参数 | 春季引导网络
- azure-devops - 如何防止 VSTS 中的发布管道创建 nuget.org 包
- appium - 如果我想在我的测试框架中使用两个appium驱动程序可以使用页面对象模型吗?
- neo4j - 查找 2 个节点 Neo4j 之间的分层路径
- android - Dart - 如何设置 DateTime 对象的小时和分钟
- java - Java - gz 存档下载为八位字节流
- android - 未找到 com.google.android.gms.internal.zu 的类文件
- office-js - 使用 Excel.js API 使用字节创建 excel 工作簿
- sql - 在 Excel VBA 中运行 SQL "SELECT ... INTO ... IN ...." 语句