package com.constellio.sdk.dev.tools; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.params.ModifiableSolrParams; public class RemoveFieldUtils { public static void main(String argv[]) throws SolrServerException, IOException { String ZE_REMOVED_FIELD = "description_t"; HttpSolrClient server = new HttpSolrClient("http://localhost:8983/solr/records"); ModifiableSolrParams params = new ModifiableSolrParams(); params.set("q", ZE_REMOVED_FIELD + ":*"); params.set("rows", 10000); params.set("fl", "id"); Map<String, String> setNull = new HashMap<>(); setNull.put("set", ""); boolean hasMore = true; while (hasMore) { List<SolrInputDocument> modification = new ArrayList<>(); System.out.println("Selecting 10000 records with ze field..."); QueryResponse queryResponse = server.query(params); List<SolrDocument> documentsWithZeField = queryResponse.getResults(); System.out.println("Handling the next " + documentsWithZeField.size() + " (total of " + queryResponse.getResults() .getNumFound()); for (SolrDocument document : documentsWithZeField) { String id = (String) document.getFieldValue("id"); SolrInputDocument solrInputDocument = new SolrInputDocument(); solrInputDocument.setField("id", id); solrInputDocument.setField(ZE_REMOVED_FIELD, setNull); modification.add(solrInputDocument); } if (modification.isEmpty()) { hasMore = false; } else { System.out.println("Removing field of the selected documents\n"); server.add(modification); server.commit(true, true, true); } } server.commit(); } }