import pl.edu.icm.synat.api.services.index.fulltext.FulltextIndexService import pl.edu.icm.synat.api.services.index.fulltext.query.FulltextSearchQuery import pl.edu.icm.synat.api.services.index.fulltext.query.criteria.SearchOperator import pl.edu.icm.synat.api.services.index.fulltext.query.criteria.impl.FieldCriterion import pl.edu.icm.synat.api.services.index.fulltext.query.format.FieldRequest import pl.edu.icm.synat.api.services.index.fulltext.query.format.ResultsFormat import pl.edu.icm.synat.api.services.store.StatelessStore import pl.edu.icm.synat.api.services.store.model.RecordId import pl.edu.icm.synat.logic.index.publication.CollectionIndexFieldConstants index = serviceUtils.getService('Index', FulltextIndexService.class) store = serviceUtils.getService('Store', StatelessStore.class) batchSize =1000; resultsFormat = new ResultsFormat(new FieldRequest(CollectionIndexFieldConstants.FIELD_EXID, true)); searchQuery = new FulltextSearchQuery(0, batchSize, resultsFormat, new FieldCriterion("dataset", "driver", SearchOperator.AND)); results = index.performSearch(searchQuery).getResults(); println "SIZE " + results.size(); skip = 0 totalDeleted = 0 while(results.size()>0){ def deleted = clear(store,index,results) skip += batchSize - deleted totalDeleted+= deleted println "WYWALONO " + totalDeleted; searchQuery = new FulltextSearchQuery(skip, batchSize, resultsFormat, new FieldCriterion("dataset", "driver", SearchOperator.AND)); results = index.performSearch(searchQuery).getResults(); } def clear(store, index, results){ def delCount=0 def list = [] for(result in results){ def id = result.getDocId() if(store.fetchRecord(new RecordId(id))==null){ list.addAll(id) delCount++ } } index.deleteDocuments(list); return delCount; }