|
17 | 17 | import org.elasticsearch.index.query.QueryStringQueryBuilder; |
18 | 18 | import org.elasticsearch.plugins.Plugin; |
19 | 19 | import org.elasticsearch.search.SearchHit; |
| 20 | +import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; |
| 21 | +import org.elasticsearch.search.fetch.subphase.highlight.HighlightField; |
20 | 22 | import org.elasticsearch.test.ESIntegTestCase; |
21 | 23 |
|
22 | 24 | import java.util.ArrayList; |
23 | 25 | import java.util.Collection; |
24 | 26 | import java.util.LinkedHashSet; |
25 | 27 | import java.util.List; |
| 28 | +import java.util.Map; |
26 | 29 |
|
27 | 30 | import static org.elasticsearch.action.search.SearchType.DFS_QUERY_THEN_FETCH; |
28 | 31 | import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder; |
@@ -197,5 +200,29 @@ public void testExplain() throws Exception { |
197 | 200 |
|
198 | 201 |
|
199 | 202 | } |
| 203 | + |
| 204 | + public void testHighlight() throws Exception { |
| 205 | + // Issue raised in https://github.com/elastic/elasticsearch/issues/53699 |
| 206 | + assertAcked(prepareCreate("test").addMapping("type1", |
| 207 | + jsonBuilder().startObject().startObject("type1").startObject("properties").startObject("field1") |
| 208 | + .field("analyzer", "whitespace").field("type", "text").endObject().endObject().endObject().endObject())); |
| 209 | + ensureGreen(); |
| 210 | + client().prepareIndex("test", "type1", "1").setSource("field1", "the quick brown fox").get(); |
| 211 | + refresh(); |
| 212 | + |
| 213 | + PinnedQueryBuilder pqb = new PinnedQueryBuilder(QueryBuilders.matchQuery("field1", "the quick brown").operator(Operator.OR), "2"); |
| 214 | + |
| 215 | + HighlightBuilder testHighlighter = new HighlightBuilder(); |
| 216 | + testHighlighter.field("field1"); |
200 | 217 |
|
| 218 | + SearchResponse searchResponse = client().prepareSearch().setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setQuery(pqb) |
| 219 | + .highlighter(testHighlighter) |
| 220 | + .setExplain(true).get(); |
| 221 | + assertHitCount(searchResponse, 1); |
| 222 | + Map<String, HighlightField> highlights = searchResponse.getHits().getHits()[0].getHighlightFields(); |
| 223 | + assertThat(highlights.size(), equalTo(1)); |
| 224 | + HighlightField highlight = highlights.get("field1"); |
| 225 | + assertThat(highlight.fragments()[0].toString(), equalTo("<em>the</em> <em>quick</em> <em>brown</em> fox")); |
| 226 | + } |
201 | 227 | } |
| 228 | + |
0 commit comments