Spring Boot Elasticsearch查询热门搜索词列表

概述

在使用Elasticsearch中,我们有时候需要查询出热门搜索词列表,那么可以通过下面方式获取。

本文示例介绍通过Spring Boot来实现Elasticsearch

代码示例

特别注意:需要把搜索记录存入到es中,然后通过查询搜索历史获取热门记录

如果需要通过条件过滤,需要在setQuery中指定过滤条件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@Autowired
private ElasticsearchTemplate elasticsearchTemplate;


@org.junit.Test
public void sendSimpleMail() {

try {
//获取搜索日志
SearchRequestBuilder requestBuilder = elasticsearchTemplate.getClient().prepareSearch("search_log_index").setTypes("searchlog").setQuery(QueryBuilders.matchAllQuery());

//聚合分析查询出现次数最多的10个词汇
SearchResponse actionGet = requestBuilder.addAggregation(AggregationBuilders.terms("hotKeyWord").field("keyword").size(10)).execute().actionGet();
//获取分析后的数据
Aggregations aggregations = actionGet.getAggregations();
Terms trem = aggregations.get("hotKeyWord");
List<Bucket> buckets = (List<Bucket>) trem.getBuckets();
List<String> hotkeyWordList = new ArrayList<>();
for (Bucket bucket : buckets) {
String key = (String) bucket.getKey();
hotkeyWordList.add(key);
}
} catch (Exception e) {
e.printStackTrace();
}

}