Tests: Add test for parsing InnerHits with highlight query
This adds a test from #21065 that checks correct highlighting of inner hits of a has-child query when using a nested highlight query.
This commit is contained in:
parent
18393a06f3
commit
8329bf145a
|
@ -36,18 +36,21 @@ import org.elasticsearch.index.query.BoolQueryBuilder;
|
||||||
import org.elasticsearch.index.query.HasChildQueryBuilder;
|
import org.elasticsearch.index.query.HasChildQueryBuilder;
|
||||||
import org.elasticsearch.index.query.HasParentQueryBuilder;
|
import org.elasticsearch.index.query.HasParentQueryBuilder;
|
||||||
import org.elasticsearch.index.query.IdsQueryBuilder;
|
import org.elasticsearch.index.query.IdsQueryBuilder;
|
||||||
|
import org.elasticsearch.index.query.InnerHitBuilder;
|
||||||
import org.elasticsearch.index.query.MatchAllQueryBuilder;
|
import org.elasticsearch.index.query.MatchAllQueryBuilder;
|
||||||
import org.elasticsearch.index.query.MatchQueryBuilder;
|
import org.elasticsearch.index.query.MatchQueryBuilder;
|
||||||
import org.elasticsearch.index.query.QueryBuilder;
|
import org.elasticsearch.index.query.QueryBuilder;
|
||||||
import org.elasticsearch.index.query.QueryBuilders;
|
import org.elasticsearch.index.query.QueryBuilders;
|
||||||
import org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder;
|
import org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder;
|
||||||
import org.elasticsearch.rest.RestStatus;
|
import org.elasticsearch.rest.RestStatus;
|
||||||
|
import org.elasticsearch.search.SearchHit;
|
||||||
import org.elasticsearch.search.aggregations.AggregationBuilders;
|
import org.elasticsearch.search.aggregations.AggregationBuilders;
|
||||||
import org.elasticsearch.search.aggregations.bucket.filter.Filter;
|
import org.elasticsearch.search.aggregations.bucket.filter.Filter;
|
||||||
import org.elasticsearch.search.aggregations.bucket.global.Global;
|
import org.elasticsearch.search.aggregations.bucket.global.Global;
|
||||||
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
|
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
|
||||||
import org.elasticsearch.search.builder.SearchSourceBuilder;
|
import org.elasticsearch.search.builder.SearchSourceBuilder;
|
||||||
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
|
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
|
||||||
|
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.Field;
|
||||||
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
|
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
|
||||||
import org.elasticsearch.search.sort.SortBuilders;
|
import org.elasticsearch.search.sort.SortBuilders;
|
||||||
import org.elasticsearch.search.sort.SortOrder;
|
import org.elasticsearch.search.sort.SortOrder;
|
||||||
|
@ -68,8 +71,8 @@ import java.util.Set;
|
||||||
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
|
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
|
||||||
import static org.elasticsearch.index.query.QueryBuilders.boolQuery;
|
import static org.elasticsearch.index.query.QueryBuilders.boolQuery;
|
||||||
import static org.elasticsearch.index.query.QueryBuilders.constantScoreQuery;
|
import static org.elasticsearch.index.query.QueryBuilders.constantScoreQuery;
|
||||||
import static org.elasticsearch.index.query.QueryBuilders.hasParentQuery;
|
|
||||||
import static org.elasticsearch.index.query.QueryBuilders.hasChildQuery;
|
import static org.elasticsearch.index.query.QueryBuilders.hasChildQuery;
|
||||||
|
import static org.elasticsearch.index.query.QueryBuilders.hasParentQuery;
|
||||||
import static org.elasticsearch.index.query.QueryBuilders.idsQuery;
|
import static org.elasticsearch.index.query.QueryBuilders.idsQuery;
|
||||||
import static org.elasticsearch.index.query.QueryBuilders.matchAllQuery;
|
import static org.elasticsearch.index.query.QueryBuilders.matchAllQuery;
|
||||||
import static org.elasticsearch.index.query.QueryBuilders.matchQuery;
|
import static org.elasticsearch.index.query.QueryBuilders.matchQuery;
|
||||||
|
@ -811,6 +814,30 @@ public class ChildQuerySearchIT extends ESIntegTestCase {
|
||||||
assertThat(searchResponse.getHits().hits()[0].id(), equalTo("2"));
|
assertThat(searchResponse.getHits().hits()[0].id(), equalTo("2"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testHasChildInnerHitsHighlighting() throws Exception {
|
||||||
|
assertAcked(prepareCreate("test")
|
||||||
|
.addMapping("parent")
|
||||||
|
.addMapping("child", "_parent", "type=parent"));
|
||||||
|
ensureGreen();
|
||||||
|
|
||||||
|
client().prepareIndex("test", "parent", "1").setSource("p_field", 1).get();
|
||||||
|
client().prepareIndex("test", "child", "2").setParent("1").setSource("c_field", "foo bar").get();
|
||||||
|
client().admin().indices().prepareFlush("test").get();
|
||||||
|
|
||||||
|
SearchResponse searchResponse = client().prepareSearch("test").setQuery(
|
||||||
|
hasChildQuery("child", matchQuery("c_field", "foo"), ScoreMode.None)
|
||||||
|
.innerHit(new InnerHitBuilder().setHighlightBuilder(
|
||||||
|
new HighlightBuilder().field(new Field("c_field").highlightQuery(QueryBuilders.matchQuery("c_field", "bar"))))))
|
||||||
|
.get();
|
||||||
|
assertNoFailures(searchResponse);
|
||||||
|
assertThat(searchResponse.getHits().totalHits(), equalTo(1L));
|
||||||
|
assertThat(searchResponse.getHits().hits()[0].id(), equalTo("1"));
|
||||||
|
SearchHit[] searchHits = searchResponse.getHits().hits()[0].getInnerHits().get("child").hits();
|
||||||
|
assertThat(searchHits.length, equalTo(1));
|
||||||
|
assertThat(searchHits[0].getHighlightFields().get("c_field").getFragments().length, equalTo(1));
|
||||||
|
assertThat(searchHits[0].getHighlightFields().get("c_field").getFragments()[0].string(), equalTo("foo <em>bar</em>"));
|
||||||
|
}
|
||||||
|
|
||||||
public void testHasChildAndHasParentWrappedInAQueryFilter() throws Exception {
|
public void testHasChildAndHasParentWrappedInAQueryFilter() throws Exception {
|
||||||
assertAcked(prepareCreate("test")
|
assertAcked(prepareCreate("test")
|
||||||
.addMapping("parent")
|
.addMapping("parent")
|
||||||
|
|
Loading…
Reference in New Issue