Skip to content

Commit

Permalink
Fix NPE bug inner_hits (elastic#50709)
Browse files Browse the repository at this point in the history
When there several subqueries on different relations of the join field,
and only one of subqueries is using inner_hits, NPE occurs.
This PR prevents NPE error.

Closes elastic#50539
  • Loading branch information
mayya-sharipova committed Jan 7, 2020
1 parent d0d4831 commit 0b7309e
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,10 @@ public TopDocsAndMaxScore[] topDocs(SearchHit[] hits) throws IOException {
.build();
} else {
String parentId = getSortedDocValue(parentIdFieldMapper.name(), context, hit.docId());
if (parentId == null) {
result[i] = new TopDocsAndMaxScore(Lucene.EMPTY_TOP_DOCS, Float.NaN);
continue;
}
q = context.mapperService().fullName(IdFieldMapper.NAME).termQuery(parentId, qsc);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
---
"Test two sub-queries with only one having inner_hits":
- skip:
version: " - 7.59.99"
reason: "The bug was corrected from 7.6"

- do:
indices.create:
index: test
body:
mappings:
properties:
entity_type: { "type": "keyword" }
join_field: { "type": "join", "relations": { "question": "answer", "person" : "address" } }
settings:
number_of_shards: 1

- do:
index:
index: test
id: 1
body: { "join_field": { "name": "question" }, "entity_type": "question" }

- do:
index:
index: test
id: 2
routing: 1
body: { "join_field": { "name": "answer", "parent": 1} , "entity_type": "answer" }

- do:
index:
index: test
id: 3
body: { "join_field": { "name": "person" }, "entity_type": "person" }

- do:
index:
index: test
routing: 3
id: 4
body: { "join_field": { "name": "address", "parent": 3 }, "entity_type": "address" }

- do:
indices.refresh: {}

- do:
search:
index: test
body:
query:
bool:
should:
- term:
entity_type: person
- has_parent:
parent_type: question
query:
match_all: {}
inner_hits: {}


- match: { hits.total.value: 2 }
- match: { hits.hits.0._id: "3" }
- match: { hits.hits.0.inner_hits.question.hits.total.value: 0}
- match: { hits.hits.1._id: "2" }
- match: { hits.hits.1.inner_hits.question.hits.total.value: 1}
- match: { hits.hits.1.inner_hits.question.hits.hits.0._id: "1"}

0 comments on commit 0b7309e

Please sign in to comment.