首页 > 解决方案 > 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 文件中删除双引号并尝试重新索引文档

标签: solrsolr5

解决方案


双引号的原因是因为您的值被索引为字符串 - 它没有被索引为多值字段。双引号在那里,因为这就是 JSON 表示我们正在谈论一个字符串的方式。

索引数据时需要更改此设置,索引 CSV 时可以使用一些特殊参数

f.amenities.split=true&f.amenities.separator=%2C

这样,通过将字段中的值拆分为,. 如果您的 CSV 文件中有一个实际的 JSON 列表,我强烈建议您从字段中删除[,']作为预处理步骤。


推荐阅读