es8新Java api 设置高亮搜索不生效
时间: 2023-11-12 15:06:03 浏览: 47
可能是您没有正确设置高亮搜索的参数。在使用ES8的Java API进行高亮搜索时,需要指定要高亮的字段、高亮前缀和后缀等参数,例如:
```java
HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.field("title");
highlightBuilder.preTags("<em>");
highlightBuilder.postTags("</em>");
SearchResponse response = client.prepareSearch("index_name")
.setQuery(QueryBuilders.termQuery("title", "search_keyword"))
.highlighter(highlightBuilder)
.get();
```
在上面的代码中,我们指定了要高亮的字段为"title",高亮前缀为"<em>",高亮后缀为"</em>"。如果您没有指定这些参数,那么高亮搜索就不会生效。
另外,还需要注意的一点是,ES8中的高亮搜索与ES7有所不同,具体可以参考官方文档进行调整。
相关问题
Java API ES8中的高亮搜索
在Java API ES8中,可以使用Highlight API来实现高亮搜索。以下是一个简单的例子:
```
SearchRequest searchRequest = new SearchRequest("my_index");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
QueryBuilder queryBuilder = QueryBuilders.matchQuery("my_field", "my_search_text");
searchSourceBuilder.query(queryBuilder);
HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.field("my_field");
searchSourceBuilder.highlighter(highlightBuilder);
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
SearchHits hits = searchResponse.getHits();
for (SearchHit hit : hits.getHits()) {
Map<String, HighlightField> highlightFields = hit.getHighlightFields();
HighlightField highlight = highlightFields.get("my_field");
String[] fragments = highlight.fragments();
String fragmentString = StringUtils.join(fragments, "...");
// Do something with the highlighted fragment
}
```
在上面的代码中,我们首先创建了一个SearchRequest对象,并设置了要搜索的索引名称。然后,我们创建了一个SearchSourceBuilder对象,并使用QueryBuilder来指定我们要搜索的文本。接下来,我们创建了一个HighlightBuilder对象,并将要高亮显示的字段名称添加到其中。最后,我们将HighlightBuilder对象添加到SearchSourceBuilder对象中,并执行搜索。
搜索完成后,我们从SearchResponse对象中获取搜索结果,并使用getHighlightFields()方法来获取高亮字段的映射。我们可以使用这个映射来获取每个文档的高亮字段。在上面的例子中,我们只高亮显示了一个字段,因此我们只需要从映射中获取“my_field”键的值。我们使用HighlightField对象的fragments()方法来获取高亮文本的片段,并使用StringUtils.join()方法将它们连接起来。最后,我们可以对高亮文本进行进一步处理,例如将它们显示在搜索结果页面上。
ES8中的高亮搜索 java
ES8中的高亮搜索功能可以通过使用highlight查询和highlight字段来实现。具体步骤如下:
1. 在查询中添加highlight选项,指定需要高亮的字段和高亮格式:
```
{
"query": {
"match": {
"content": "java"
}
},
"highlight": {
"fields": {
"content": {}
},
"pre_tags": ["<b>"],
"post_tags": ["</b>"]
}
}
```
2. 在搜索结果中获取高亮内容:
```
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 0.2876821,
"hits": [
{
"_index": "my_index",
"_type": "_doc",
"_id": "1",
"_score": 0.2876821,
"_source": {
"title": "Java Basics",
"content": "Java is a popular programming language."
},
"highlight": {
"content": [
"<b>Java</b> is a popular programming language."
]
}
}
]
}
}
```
在上述示例中,我们使用了match查询来查找所有包含“java”的文档,然后在highlight选项中指定了需要高亮的字段和高亮格式。在搜索结果中,我们可以看到高亮内容被放置在了highlight字段中。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)