|
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;
|
@@ -196,5 +199,29 @@ public void testExplain() throws Exception {
|
196 | 199 |
|
197 | 200 |
|
198 | 201 | }
|
| 202 | + |
| 203 | + public void testHighlight() throws Exception { |
| 204 | + // Issue raised in https://github.com/elastic/elasticsearch/issues/53699 |
| 205 | + assertAcked(prepareCreate("test").setMapping( |
| 206 | + jsonBuilder().startObject().startObject("_doc").startObject("properties").startObject("field1") |
| 207 | + .field("analyzer", "whitespace").field("type", "text").endObject().endObject().endObject().endObject())); |
| 208 | + ensureGreen(); |
| 209 | + client().prepareIndex("test").setId("1").setSource("field1", "the quick brown fox").get(); |
| 210 | + refresh(); |
| 211 | + |
| 212 | + PinnedQueryBuilder pqb = new PinnedQueryBuilder(QueryBuilders.matchQuery("field1", "the quick brown").operator(Operator.OR), "2"); |
| 213 | + |
| 214 | + HighlightBuilder testHighlighter = new HighlightBuilder(); |
| 215 | + testHighlighter.field("field1"); |
199 | 216 |
|
| 217 | + SearchResponse searchResponse = client().prepareSearch().setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setQuery(pqb) |
| 218 | + .highlighter(testHighlighter) |
| 219 | + .setExplain(true).get(); |
| 220 | + assertHitCount(searchResponse, 1); |
| 221 | + Map<String, HighlightField> highlights = searchResponse.getHits().getHits()[0].getHighlightFields(); |
| 222 | + assertThat(highlights.size(), equalTo(1)); |
| 223 | + HighlightField highlight = highlights.get("field1"); |
| 224 | + assertThat(highlight.fragments()[0].toString(), equalTo("<em>the</em> <em>quick</em> <em>brown</em> fox")); |
| 225 | + } |
200 | 226 | }
|
| 227 | + |
0 commit comments