diff options
author | Simon Willnauer <simon.willnauer@elasticsearch.com> | 2016-10-11 15:30:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-11 15:30:38 +0200 |
commit | c98e3f60f78fb47ae7482d96952f2dbabd1d6d49 (patch) | |
tree | e8ed1c07eeee9d3e48309da4f71b38ba2cfaa454 /core/src/test/java/org | |
parent | 3528a514e2c4135dd216de92bd34c38d8a180173 (diff) |
Ensure source filtering automatons are only compiled once (#20857)
This change adds a overloaded `XContentMapValues#filter` method that returns
a function enclosing the compiled automatons that can be reused across filter
calls. This for instance prevents compiling automatons over and over again when
hits are filtered or in the SourceFieldMapper for each document.
Closes #20839
Diffstat (limited to 'core/src/test/java/org')
5 files changed, 39 insertions, 32 deletions
diff --git a/core/src/test/java/org/elasticsearch/index/query/InnerHitBuilderTests.java b/core/src/test/java/org/elasticsearch/index/query/InnerHitBuilderTests.java index 5f8c847e41..19252a6b80 100644 --- a/core/src/test/java/org/elasticsearch/index/query/InnerHitBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/index/query/InnerHitBuilderTests.java @@ -236,7 +236,7 @@ public class InnerHitBuilderTests extends ESTestCase { if (randomBoolean()) { randomFetchSourceContext = new FetchSourceContext(randomBoolean()); } else { - randomFetchSourceContext = new FetchSourceContext( + randomFetchSourceContext = new FetchSourceContext(true, generateRandomStringArray(12, 16, false), generateRandomStringArray(12, 16, false) ); @@ -322,7 +322,7 @@ public class InnerHitBuilderTests extends ESTestCase { if (randomBoolean()) { randomFetchSourceContext = new FetchSourceContext(randomBoolean()); } else { - randomFetchSourceContext = new FetchSourceContext( + randomFetchSourceContext = new FetchSourceContext(true, generateRandomStringArray(12, 16, false), generateRandomStringArray(12, 16, false) ); diff --git a/core/src/test/java/org/elasticsearch/mget/SimpleMgetIT.java b/core/src/test/java/org/elasticsearch/mget/SimpleMgetIT.java index e022bd7521..c8e14867d3 100644 --- a/core/src/test/java/org/elasticsearch/mget/SimpleMgetIT.java +++ b/core/src/test/java/org/elasticsearch/mget/SimpleMgetIT.java @@ -60,7 +60,8 @@ public class SimpleMgetIT extends ESIntegTestCase { assertThat(mgetResponse.getResponses()[1].getIndex(), is("nonExistingIndex")); assertThat(mgetResponse.getResponses()[1].isFailed(), is(true)); assertThat(mgetResponse.getResponses()[1].getFailure().getMessage(), is("no such index")); - assertThat(((ElasticsearchException) mgetResponse.getResponses()[1].getFailure().getFailure()).getIndex().getName(), is("nonExistingIndex")); + assertThat(((ElasticsearchException) mgetResponse.getResponses()[1].getFailure().getFailure()).getIndex().getName(), + is("nonExistingIndex")); mgetResponse = client().prepareMultiGet() @@ -70,7 +71,8 @@ public class SimpleMgetIT extends ESIntegTestCase { assertThat(mgetResponse.getResponses()[0].getIndex(), is("nonExistingIndex")); assertThat(mgetResponse.getResponses()[0].isFailed(), is(true)); assertThat(mgetResponse.getResponses()[0].getFailure().getMessage(), is("no such index")); - assertThat(((ElasticsearchException) mgetResponse.getResponses()[0].getFailure().getFailure()).getIndex().getName(), is("nonExistingIndex")); + assertThat(((ElasticsearchException) mgetResponse.getResponses()[0].getFailure().getFailure()).getIndex().getName(), + is("nonExistingIndex")); } @@ -119,9 +121,11 @@ public class SimpleMgetIT extends ESIntegTestCase { MultiGetRequestBuilder request = client().prepareMultiGet(); for (int i = 0; i < 100; i++) { if (i % 2 == 0) { - request.add(new MultiGetRequest.Item(indexOrAlias(), "type", Integer.toString(i)).fetchSourceContext(new FetchSourceContext("included", "*.hidden_field"))); + request.add(new MultiGetRequest.Item(indexOrAlias(), "type", Integer.toString(i)) + .fetchSourceContext(new FetchSourceContext(true, new String[] {"included"}, new String[] {"*.hidden_field"}))); } else { - request.add(new MultiGetRequest.Item(indexOrAlias(), "type", Integer.toString(i)).fetchSourceContext(new FetchSourceContext(false))); + request.add(new MultiGetRequest.Item(indexOrAlias(), "type", Integer.toString(i)) + .fetchSourceContext(new FetchSourceContext(false))); } } diff --git a/core/src/test/java/org/elasticsearch/search/AbstractSearchTestCase.java b/core/src/test/java/org/elasticsearch/search/AbstractSearchTestCase.java index 048416c25e..e98b469f95 100644 --- a/core/src/test/java/org/elasticsearch/search/AbstractSearchTestCase.java +++ b/core/src/test/java/org/elasticsearch/search/AbstractSearchTestCase.java @@ -153,19 +153,20 @@ public abstract class AbstractSearchTestCase extends ESTestCase { fetchSourceContext = new FetchSourceContext(randomBoolean()); break; case 1: - fetchSourceContext = new FetchSourceContext(includes, excludes); + fetchSourceContext = new FetchSourceContext(true, includes, excludes); break; case 2: - fetchSourceContext = new FetchSourceContext(randomAsciiOfLengthBetween(5, 20), randomAsciiOfLengthBetween(5, 20)); + fetchSourceContext = new FetchSourceContext(true, new String[]{randomAsciiOfLengthBetween(5, 20)}, + new String[]{randomAsciiOfLengthBetween(5, 20)}); break; case 3: fetchSourceContext = new FetchSourceContext(true, includes, excludes); break; case 4: - fetchSourceContext = new FetchSourceContext(includes); + fetchSourceContext = new FetchSourceContext(true, includes, null); break; case 5: - fetchSourceContext = new FetchSourceContext(randomAsciiOfLengthBetween(5, 20)); + fetchSourceContext = new FetchSourceContext(true, new String[] {randomAsciiOfLengthBetween(5, 20)}, null); break; default: throw new IllegalStateException(); diff --git a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsTests.java b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsTests.java index 3f2b4c4462..98e2833903 100644 --- a/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsTests.java +++ b/core/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsTests.java @@ -107,26 +107,27 @@ public class TopHitsTests extends BaseAggregationTestCase<TopHitsAggregationBuil excludes[i] = randomAsciiOfLengthBetween(5, 20); } switch (branch) { - case 0: - fetchSourceContext = new FetchSourceContext(randomBoolean()); - break; - case 1: - fetchSourceContext = new FetchSourceContext(includes, excludes); - break; - case 2: - fetchSourceContext = new FetchSourceContext(randomAsciiOfLengthBetween(5, 20), randomAsciiOfLengthBetween(5, 20)); - break; - case 3: - fetchSourceContext = new FetchSourceContext(true, includes, excludes); - break; - case 4: - fetchSourceContext = new FetchSourceContext(includes); - break; - case 5: - fetchSourceContext = new FetchSourceContext(randomAsciiOfLengthBetween(5, 20)); - break; - default: - throw new IllegalStateException(); + case 0: + fetchSourceContext = new FetchSourceContext(randomBoolean()); + break; + case 1: + fetchSourceContext = new FetchSourceContext(true, includes, excludes); + break; + case 2: + fetchSourceContext = new FetchSourceContext(true, new String[]{randomAsciiOfLengthBetween(5, 20)}, + new String[]{randomAsciiOfLengthBetween(5, 20)}); + break; + case 3: + fetchSourceContext = new FetchSourceContext(true, includes, excludes); + break; + case 4: + fetchSourceContext = new FetchSourceContext(true, includes, null); + break; + case 5: + fetchSourceContext = new FetchSourceContext(true, new String[] {randomAsciiOfLengthBetween(5, 20)}, null); + break; + default: + throw new IllegalStateException(); } factory.fetchSource(fetchSourceContext); } diff --git a/core/src/test/java/org/elasticsearch/search/fetch/subphase/InnerHitsIT.java b/core/src/test/java/org/elasticsearch/search/fetch/subphase/InnerHitsIT.java index 1e43ffe532..1c9a915b2a 100644 --- a/core/src/test/java/org/elasticsearch/search/fetch/subphase/InnerHitsIT.java +++ b/core/src/test/java/org/elasticsearch/search/fetch/subphase/InnerHitsIT.java @@ -666,7 +666,7 @@ public class InnerHitsIT extends ESIntegTestCase { .innerHit(new InnerHitBuilder())).get(); assertNoFailures(response); assertHitCount(response, 1); - SearchHit hit = response.getHits().getAt(0); + SearchHit hit = response.getHits().getAt(0); assertThat(hit.id(), equalTo("1")); SearchHits messages = hit.getInnerHits().get("comments.messages"); assertThat(messages.getTotalHits(), equalTo(1L)); @@ -982,7 +982,8 @@ public class InnerHitsIT extends ESIntegTestCase { // other features (like in the query dsl or aggs) in order for consistency: SearchResponse response = client().prepareSearch() .setQuery(nestedQuery("comments", matchQuery("comments.message", "fox"), ScoreMode.None) - .innerHit(new InnerHitBuilder().setFetchSourceContext(new FetchSourceContext("comments.message")))) + .innerHit(new InnerHitBuilder().setFetchSourceContext(new FetchSourceContext(true, + new String[]{"comments.message"}, null)))) .get(); assertNoFailures(response); assertHitCount(response, 1); |