private static void assertDeleteByQuery(DeleteByQueryLuceneWork work, DeleteByQueryLuceneWork copy) { assertThat( work.getEntityType() ).as( "DeleteByQuery.getEntityClass is not copied" ).isEqualTo( copy.getEntityType() ); assertThat( work.getDeletionQuery() ).as( "DeleteByQuery.getDeletionQuery is not copied" ).isEqualTo( copy.getDeletionQuery() ); }
@Override public void performWork(LuceneWork work, IndexWriterDelegate delegate, IndexingMonitor monitor) { DeleteByQueryLuceneWork deleteWork = (DeleteByQueryLuceneWork) work; final IndexedTypeIdentifier entityType = work.getEntityType(); final DeletionQuery query = deleteWork.getDeletionQuery(); if ( log.isTraceEnabled() ) { log.tracef( "Removing all %s matching Query: %s", entityType.toString(), query.toString() ); } BooleanQuery.Builder entityDeletionQueryBuilder = new BooleanQuery.Builder(); { Query queryToDelete = query.toLuceneQuery( this.workspace.getDocumentBuilder( entityType ) ); entityDeletionQueryBuilder.add( queryToDelete, BooleanClause.Occur.FILTER ); } Term classNameQueryTerm = new Term( ProjectionConstants.OBJECT_CLASS, entityType.getName() ); TermQuery classNameQuery = new TermQuery( classNameQueryTerm ); entityDeletionQueryBuilder.add( classNameQuery, BooleanClause.Occur.FILTER ); addTenantQueryTerm( work.getTenantId(), entityDeletionQueryBuilder ); try { delegate.deleteDocuments( entityDeletionQueryBuilder.build() ); } catch (IOException e) { SearchException ex = log.unableToDeleteByQuery( entityType, query, e ); throw ex; } this.workspace.notifyWorkApplied( work ); }
@Override public void performWork(LuceneWork work, IndexWriterDelegate delegate, IndexingMonitor monitor) { DeleteByQueryLuceneWork deleteWork = (DeleteByQueryLuceneWork) work; final IndexedTypeIdentifier entityType = work.getEntityType(); final DeletionQuery query = deleteWork.getDeletionQuery(); if ( log.isTraceEnabled() ) { log.tracef( "Removing all %s matching Query: %s", entityType.toString(), query.toString() ); } BooleanQuery.Builder entityDeletionQueryBuilder = new BooleanQuery.Builder(); { Query queryToDelete = query.toLuceneQuery( this.workspace.getDocumentBuilder( entityType ) ); entityDeletionQueryBuilder.add( queryToDelete, BooleanClause.Occur.FILTER ); } Term classNameQueryTerm = new Term( ProjectionConstants.OBJECT_CLASS, entityType.getName() ); TermQuery classNameQuery = new TermQuery( classNameQueryTerm ); entityDeletionQueryBuilder.add( classNameQuery, BooleanClause.Occur.FILTER ); addTenantQueryTerm( work.getTenantId(), entityDeletionQueryBuilder ); try { delegate.deleteDocuments( entityDeletionQueryBuilder.build() ); } catch (IOException e) { SearchException ex = log.unableToDeleteByQuery( entityType, query, e ); throw ex; } this.workspace.notifyWorkApplied( work ); }
@Override public ElasticsearchWork<?> visitDeleteByQueryWork(DeleteByQueryLuceneWork work, IndexingMonitor monitor) { JsonObject convertedQuery = ToElasticsearch.fromDeletionQuery( searchIntegrator.getIndexBinding( work.getEntityType() ).getDocumentBuilder(), work.getDeletionQuery() ); URLEncodedString typeName = URLEncodedString.fromString( work.getEntityType().getName() ); JsonObject payload = createDeleteByQueryPayload( convertedQuery, work.getTenantId() ); return workFactory.deleteByQuery( indexName, payload ) .luceneWork( work ) .type( typeName ) .markIndexDirty( refreshAfterWrite ) .build(); }
@Override public ElasticsearchWork<?> visitDeleteByQueryWork(DeleteByQueryLuceneWork work, IndexingMonitor monitor) { JsonObject convertedQuery = ToElasticsearch.fromDeletionQuery( searchIntegrator.getIndexBinding( work.getEntityType() ).getDocumentBuilder(), work.getDeletionQuery() ); URLEncodedString typeName = URLEncodedString.fromString( work.getEntityType().getName() ); JsonObject payload = createDeleteByQueryPayload( convertedQuery, work.getTenantId() ); return workFactory.deleteByQuery( indexName, payload ) .luceneWork( work ) .type( typeName ) .markIndexDirty( refreshAfterWrite ) .build(); }
JsonObject convertedQuery = ToElasticsearch.fromDeletionQuery( searchIntegrator.getIndexBinding( work.getEntityClass() ).getDocumentBuilder(), work.getDeletionQuery() ); String type = work.getEntityClass().getName();
serializer.addDeleteByQuery( work.getEntityType().getName(), ( (DeleteByQueryLuceneWork) work ).getDeletionQuery() );
serializer.addDeleteByQuery( work.getEntityType().getName(), ( (DeleteByQueryLuceneWork) work ).getDeletionQuery() );