Как выбрать/удалить все документы из Solr с помощью логического понятия NOT?
то есть. Как удалить все документы из Solr, который id не запускается с A59?
Как выбрать/удалить все документы из Solr с помощью логического понятия NOT?
то есть. Как удалить все документы из Solr, который id не запускается с A59?
Используйте '-' для обозначения NOT.
Например, для запроса документов с идентификатором, не начинающимся с A59, запрос будет выглядеть следующим образом: -id:A59*
, то есть: /solr/select/?q=-id:A59*
Чтобы удалить по запросу, отправьте запрос в сообщении об удалении обработчику обновления, как указано здесь.
EDIT: NOT (все прописные буквы) также можно использовать как оператор
Восклицание работает и для NOT, поэтому:
/solr/select/?q=!id:A59*
должен работать в приведенном выше случае.
Я не считаю, что работает отрицательное удаление по запросу. См. Этот билет Джиры: https://issues.apache.org/jira/browse/SOLR-381
Они говорят, что в префиксе есть обходной путь: a, но мне не повезло с этим.
Это не работает (то же самое с использованием NOT) java -Ddata = args -jar/opt/solr/example/exampledocs/post.jar "-userid: *" java -jar/opt/solr/example/exampledocs/post.jar *.xml
Добавление в a: дает синтаксическую ошибку (то же самое с использованием NOT) java -Ddata = args -jar/opt/solr/example/exampledocs/post.jar ": -userid: *" java -jar/opt/solr/example/exampledocs/post.jar *.xml
SimplePostTool: версия 1.4 SimplePostTool: POSTing args http://localhost:8983/solr/update.. SimplePostTool: FATAL: Solr вернула ошибку # 400 Ошибка при анализе запроса Lucene SimplePostTool: версия 1.4
перед удалением, пожалуйста, убедитесь, что идентификаторы, которые вы имеете в виду, являются строкой и никоим образом не будут образованы с помощью двух слагаемых. То, как я это сделаю, - это прочитать данные из solr из script и выполнить исключительное удаление или в пакетах, поскольку он обеспечивает лучший контроль и проверку над каждым идентификатором, что снижает риск неправильного удаления следовательно 1 прочитайте данные из solr из script, используя /Solr/ выбрать/д = ID: A59 *
2 проверить и проверить идентификаторы
3 удаляют их по одному или в группе из 10 идентификаторов одновременно
Привет
Раджат
Как Mauricio заявил:
Используйте символ -, чтобы указать, что вы хотите исключить в своем запросе. Следующие два запроса удаляют все документы, кроме тех, которые начинаются с A59.
GET http://<url>/solr/<core>/update?stream.body=<delete><query>-id:A59*</query></delete>
GET http://<url>/solr/<core>/update?stream.body=<commit/>
В первой строке выполняется операция удаления. Вторая строка выполняет фиксацию.
Использование символа-символа перед файлами означает, что исключить это конкретное значение. Это даст результат как НЕ равно
Ниже приведен пример строки запроса url, где. Я сохранил " & fq = -HQ_City_Code: MEL",
Он пропустит весь результат, имеющий HQ_City_Code значение MEL.
http://localhost:8983/solr/HQ_SOLR_Hotels/select?q=*:*&fq=HQ_National_Code:TH&fq=HQ_TYPE:hotel_EN&fq=HQ_Country_Code:AU&**fq=-HQ_City_Code:MEL**&wt=json&indent=true