nice usage of versioning parse element

This commit is contained in:
kimchy 2011-02-08 17:50:28 +02:00
parent ac8646deb7
commit 3062d5b86c
3 changed files with 10 additions and 8 deletions

View File

@ -24,7 +24,6 @@ import org.elasticsearch.common.collect.ImmutableMap;
import org.elasticsearch.search.SearchParseElement;
import org.elasticsearch.search.fetch.FetchPhaseExecutionException;
import org.elasticsearch.search.fetch.SearchHitPhase;
import org.elasticsearch.search.fetch.version.VersionParseElement;
import org.elasticsearch.search.internal.SearchContext;
import java.io.IOException;
@ -36,7 +35,7 @@ import java.util.Map;
public class ExplainSearchHitPhase implements SearchHitPhase {
@Override public Map<String, ? extends SearchParseElement> parseElements() {
return ImmutableMap.of("explain", new ExplainParseElement(), "version", new VersionParseElement());
return ImmutableMap.of("explain", new ExplainParseElement());
}
@Override public boolean executionNeeded(SearchContext context) {

View File

@ -36,18 +36,14 @@ import java.util.Map;
public class VersionSearchHitPhase implements SearchHitPhase {
@Override public Map<String, ? extends SearchParseElement> parseElements() {
return ImmutableMap.of();
return ImmutableMap.of("version", new VersionParseElement());
}
@Override public boolean executionNeeded(SearchContext context) {
return true;
return context.version();
}
@Override public void execute(SearchContext context, HitContext hitContext) throws ElasticSearchException {
if (!context.version()) {
hitContext.hit().version(-1);
return;
}
// it might make sense to cache the TermDocs on a shared fetch context and just skip here)
// it is going to mean we work on the high level multi reader and not the lower level reader as is
// the case below...

View File

@ -114,10 +114,17 @@ public class SimpleVersioningTests extends AbstractNodesTests {
assertThat(client.prepareGet("test", "type", "1").execute().actionGet().version(), equalTo(2l));
}
// search with versioning
for (int i = 0; i < 10; i++) {
SearchResponse searchResponse = client.prepareSearch().setQuery(matchAllQuery()).setVersion(true).execute().actionGet();
assertThat(searchResponse.hits().getAt(0).version(), equalTo(2l));
}
// search without versioning
for (int i = 0; i < 10; i++) {
SearchResponse searchResponse = client.prepareSearch().setQuery(matchAllQuery()).execute().actionGet();
assertThat(searchResponse.hits().getAt(0).version(), equalTo(-1l));
}
}
@Test public void testSimpleVersioningWithFlush() throws Exception {