使用过程参考:https://blog.csdn.net/Amor_Leo/article/details/101018008
我使用的ES版本是最新的。目前最新的版本是7.5.0
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.5.0</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>7.5.0</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.5.0</version>
<exclusions>
<exclusion>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</exclusion>
<exclusion>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
</exclusion>
</exclusions>
</dependency>
使用中发现一个大bug
/**
* 获取高亮结果集
*
* @param: [hit, highlightField]
* @return: java.util.Map<java.lang.String, java.lang.Object>
* @auther: LHL
*/
private static Map<String, Object> getResultMap(SearchHit hit, String highlightField) {
hit.getSourceAsMap().put("id", hit.getId());
if (StringUtils.isNotEmpty(highlightField)) {
Text[] text = hit.getHighlightFields().get(highlightField).getFragments();
String hightStr = null;
if (text != null) {
for (Text str : text) {
hightStr = str.string();
}
//遍历 高亮结果集,覆盖 正常结果集
hit.getSourceAsMap().put(highlightField, hightStr);
}
}
return hit.getSourceAsMap();
}
在获取getHighlightFields(),这个版本的ES获取不到这个值,导致无法获取高亮结果集