From 0f207bf4fb85725e0c3893b1232675d79ada83ed Mon Sep 17 00:00:00 2001 From: Simon Willnauer Date: Wed, 3 Jun 2015 12:56:25 +0200 Subject: [PATCH] Cleanup DeleteByQuery code from IndexShard --- .../elasticsearch/index/shard/IndexShard.java | 20 ---------------- .../shard/TranslogRecoveryPerformer.java | 24 ++++++++++++++++++- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/elasticsearch/index/shard/IndexShard.java b/src/main/java/org/elasticsearch/index/shard/IndexShard.java index 06400a3bf82..dbf1af95ade 100644 --- a/src/main/java/org/elasticsearch/index/shard/IndexShard.java +++ b/src/main/java/org/elasticsearch/index/shard/IndexShard.java @@ -550,26 +550,6 @@ public class IndexShard extends AbstractIndexShardComponent { indexingService.postDelete(delete); } - public Engine.DeleteByQuery prepareDeleteByQuery(BytesReference source, @Nullable String[] filteringAliases, Engine.Operation.Origin origin, String... types) { - return prepareDeleteByQuery(queryParserService, mapperService, indexAliasesService, indexCache, source, filteringAliases, origin, types); - } - - static Engine.DeleteByQuery prepareDeleteByQuery(IndexQueryParserService queryParserService, MapperService mapperService, IndexAliasesService indexAliasesService, IndexCache indexCache, BytesReference source, @Nullable String[] filteringAliases, Engine.Operation.Origin origin, String... types) { - long startTime = System.nanoTime(); - if (types == null) { - types = Strings.EMPTY_ARRAY; - } - Query query = queryParserService.parseQuery(source).query(); - Query searchFilter = mapperService.searchFilter(types); - if (searchFilter != null) { - query = Queries.filtered(query, searchFilter); - } - - Query aliasFilter = indexAliasesService.aliasFilter(filteringAliases); - BitDocIdSetFilter parentFilter = mapperService.hasNested() ? indexCache.bitsetFilterCache().getBitDocIdSetFilter(Queries.newNonNestedFilter()) : null; - return new Engine.DeleteByQuery(query, source, filteringAliases, aliasFilter, parentFilter, origin, startTime, types); - } - public Engine.GetResult get(Engine.Get get) { readAllowed(); return engine().get(get); diff --git a/src/main/java/org/elasticsearch/index/shard/TranslogRecoveryPerformer.java b/src/main/java/org/elasticsearch/index/shard/TranslogRecoveryPerformer.java index b2dbc1022cf..60d3cfc71b6 100644 --- a/src/main/java/org/elasticsearch/index/shard/TranslogRecoveryPerformer.java +++ b/src/main/java/org/elasticsearch/index/shard/TranslogRecoveryPerformer.java @@ -18,8 +18,14 @@ */ package org.elasticsearch.index.shard; +import org.apache.lucene.search.Query; +import org.apache.lucene.search.join.BitDocIdSetFilter; import org.elasticsearch.ElasticsearchException; +import org.elasticsearch.common.Nullable; +import org.elasticsearch.common.Strings; +import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.collect.Tuple; +import org.elasticsearch.common.lucene.search.Queries; import org.elasticsearch.index.aliases.IndexAliasesService; import org.elasticsearch.index.cache.IndexCache; import org.elasticsearch.index.engine.Engine; @@ -122,7 +128,7 @@ public class TranslogRecoveryPerformer { break; case DELETE_BY_QUERY: Translog.DeleteByQuery deleteByQuery = (Translog.DeleteByQuery) operation; - engine.delete(IndexShard.prepareDeleteByQuery(queryParserService, mapperService, indexAliasesService, indexCache, + engine.delete(prepareDeleteByQuery(queryParserService, mapperService, indexAliasesService, indexCache, deleteByQuery.source(), deleteByQuery.filteringAliases(), Engine.Operation.Origin.RECOVERY, deleteByQuery.types())); break; default: @@ -149,6 +155,22 @@ public class TranslogRecoveryPerformer { operationProcessed(); } + private static Engine.DeleteByQuery prepareDeleteByQuery(IndexQueryParserService queryParserService, MapperService mapperService, IndexAliasesService indexAliasesService, IndexCache indexCache, BytesReference source, @Nullable String[] filteringAliases, Engine.Operation.Origin origin, String... types) { + long startTime = System.nanoTime(); + if (types == null) { + types = Strings.EMPTY_ARRAY; + } + Query query = queryParserService.parseQuery(source).query(); + Query searchFilter = mapperService.searchFilter(types); + if (searchFilter != null) { + query = Queries.filtered(query, searchFilter); + } + + Query aliasFilter = indexAliasesService.aliasFilter(filteringAliases); + BitDocIdSetFilter parentFilter = mapperService.hasNested() ? indexCache.bitsetFilterCache().getBitDocIdSetFilter(Queries.newNonNestedFilter()) : null; + return new Engine.DeleteByQuery(query, source, filteringAliases, aliasFilter, parentFilter, origin, startTime, types); + } + /** * Called once for every processed operation by this recovery performer. * This can be used to get progress information on the translog execution.