Solr удалить кавычки из многозначного значения или сразу обновить

Я проиндексировал данные в своем ядре SOLR с помощью команды CURL, где данные были в формате 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, и мне удалось выполнить атомарное обновление с этим форматом JSON.

{
 "id":"2118506",
 "amenities":{"set":["parking", "garden", "spa""]},
} 

Я знаю, что могу атомарно обновить весь индексный документ, используя этот способ, отправив запрос curl на solr с помощью SET, но в данный момент это сложно для меня, потому что я уже проиндексировал 20 миллионов документов.

Поэтому я просто хочу знать, есть ли способ удалить двойные кавычки из поля multiValued во время запроса или какой-либо более разумный способ удалить двойные кавычки из значения поля с помощью одной команды curl без указания идентификаторов отдельных документов

Примечание Сейчас мне сложно удалить двойные кавычки из каждого CSV-файла и попытаться переиндексировать документы.


person Always Sunny    schedule 26.05.2018    source источник


Ответы (1)


Причина двойных кавычек в том, что ваше значение индексируется как строка, а не как многозначное поле. Двойные кавычки здесь, поскольку JSON указывает, что мы говорим о строке.

Вам нужно будет изменить это при индексировании данных, и вы можете используйте несколько специальных аргументов при индексировании CSV:

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

Таким образом, значения будут проиндексированы как фактическое многозначное поле путем разделения значений из поля на ,. Если у вас есть реальный список JSON в файле CSV, я настоятельно рекомендую удалить [, ' и ] из поля в качестве шага предварительной обработки.

person MatsLindh    schedule 26.05.2018