Skip to content

Commit

Permalink
use inferred name; update error msg; update tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dvehar committed Jan 25, 2019
1 parent 9d1184f commit 823bb8d
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -460,13 +460,13 @@ protected QueryBuilder doRewrite(QueryRewriteContext queryShardContext) throws I
@Override
protected void extractInnerHitBuilders(Map<String, InnerHitContextBuilder> innerHits) {
if (innerHitBuilder != null) {
if (innerHits.containsKey(innerHitBuilder.getName())) {
throw new IllegalArgumentException("innerHits already contains an entry for key [" + innerHitBuilder.getName() + "]");
String name = innerHitBuilder.getName() != null ? innerHitBuilder.getName() : type;
if (innerHits.containsKey(name)) {
throw new IllegalArgumentException("[inner_hits] already contains an entry for key [" + name + "]");
}

Map<String, InnerHitContextBuilder> children = new HashMap<>();
InnerHitContextBuilder.extractInnerHits(query, children);
String name = innerHitBuilder.getName() != null ? innerHitBuilder.getName() : type;
InnerHitContextBuilder innerHitContextBuilder =
new ParentChildInnerHitContextBuilder(type, true, query, innerHitBuilder, children);
innerHits.put(name, innerHitContextBuilder);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -285,13 +285,13 @@ protected QueryBuilder doRewrite(QueryRewriteContext queryShardContext) throws I
@Override
protected void extractInnerHitBuilders(Map<String, InnerHitContextBuilder> innerHits) {
if (innerHitBuilder != null) {
if (innerHits.containsKey(innerHitBuilder.getName())) {
throw new IllegalArgumentException("innerHits already contains an entry for key [" + innerHitBuilder.getName() + "]");
String name = innerHitBuilder.getName() != null ? innerHitBuilder.getName() : type;
if (innerHits.containsKey(name)) {
throw new IllegalArgumentException("[inner_hits] already contains an entry for key [" + name + "]");
}

Map<String, InnerHitContextBuilder> children = new HashMap<>();
InnerHitContextBuilder.extractInnerHits(query, children);
String name = innerHitBuilder.getName() != null ? innerHitBuilder.getName() : type;
InnerHitContextBuilder innerHitContextBuilder =
new ParentChildInnerHitContextBuilder(type, false, query, innerHitBuilder, children);
innerHits.put(name, innerHitContextBuilder);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -318,13 +318,13 @@ protected QueryBuilder doRewrite(QueryRewriteContext queryRewriteContext) throws
@Override
public void extractInnerHitBuilders(Map<String, InnerHitContextBuilder> innerHits) {
if (innerHitBuilder != null) {
if (innerHits.containsKey(innerHitBuilder.getName())) {
throw new IllegalArgumentException("innerHits already contains an entry for key [" + innerHitBuilder.getName() + "]");
String name = innerHitBuilder.getName() != null ? innerHitBuilder.getName() : path;
if (innerHits.containsKey(name)) {
throw new IllegalArgumentException("[inner_hits] already contains an entry for key [" + name + "]");
}

Map<String, InnerHitContextBuilder> children = new HashMap<>();
InnerHitContextBuilder.extractInnerHits(query, children);
String name = innerHitBuilder.getName() != null ? innerHitBuilder.getName() : path;
InnerHitContextBuilder innerHitContextBuilder = new NestedInnerHitContextBuilder(path, query, innerHitBuilder, children);
innerHits.put(name, innerHitContextBuilder);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -680,7 +680,7 @@ public void testFilterAggInsideNestedAgg() throws Exception {
assertThat(numStringParams.getDocCount(), equalTo(0L));
}

public void testExtractInnerHitBuildersWithDuplicateName() throws Exception {
public void testExtractInnerHitBuildersWithDuplicateHitName() throws Exception {
assertAcked(
prepareCreate("idxduplicatehitnames")
.setSettings(Settings.builder().put(SETTING_NUMBER_OF_SHARDS, 1).put(SETTING_NUMBER_OF_REPLICAS, 0))
Expand All @@ -698,23 +698,27 @@ public void testExtractInnerHitBuildersWithDuplicateName() throws Exception {
assertFailures(
searchRequestBuilder,
RestStatus.BAD_REQUEST,
containsString("innerHits already contains an entry for key [ih1]"));
containsString("[inner_hits] already contains an entry for key [ih1]"));
}

public void testExtractInnerHitBuildersWithNullName() throws Exception {
public void testExtractInnerHitBuildersWithDuplicatePath() throws Exception {
assertAcked(
prepareCreate("idxnullhitnames")
.setSettings(Settings.builder().put(SETTING_NUMBER_OF_SHARDS, 1).put(SETTING_NUMBER_OF_REPLICAS, 0))
.addMapping("product", "categories", "type=keyword", "name", "type=text", "property", "type=nested")
);
ensureGreen("idxnullhitnames");

SearchResponse response = client().prepareSearch("idxnullhitnames")
SearchRequestBuilder searchRequestBuilder = client()
.prepareSearch("idxnullhitnames")
.setQuery(boolQuery()
.should(nestedQuery("property", termQuery("property.id", 1D), ScoreMode.None).innerHit(new InnerHitBuilder()))
.should(nestedQuery("property", termQuery("property.id", 1D), ScoreMode.None).innerHit(new InnerHitBuilder()))
.should(nestedQuery("property", termQuery("property.id", 1D), ScoreMode.None).innerHit(new InnerHitBuilder()))
).get();
assertNoFailures(response);
.should(nestedQuery("property", termQuery("property.id", 1D), ScoreMode.None).innerHit(new InnerHitBuilder())));

assertFailures(
searchRequestBuilder,
RestStatus.BAD_REQUEST,
containsString("[inner_hits] already contains an entry for key [property]"));
}
}

0 comments on commit 823bb8d

Please sign in to comment.