EsSearchBiz.java
2.88 KB
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package com.cjs.cms.biz.elasticsearch;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.elasticsearch.search.sort.SortOrder;
import com.cjs.cms.util.elasticsearch.EsClient;
/**
* 搜索ElasticSearch
*
* @author tongyufu
*
*/
public class EsSearchBiz {
public static void main(String[] args) {
EsSearchBiz search = new EsSearchBiz();
search.matchQuery();
}
public void matchQuery() {
TransportClient client = EsClient.getClient();
SearchRequestBuilder request = client.prepareSearch(EsClient.INDEX).setTypes(EsClient.TYPE)
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
request.setQuery(QueryBuilders.matchQuery("otcName", "孙中山"));
request.setPostFilter(QueryBuilders.rangeQuery("businessAmount").from(2).to(10)); //过滤器
request.addSort("tradeAt", SortOrder.DESC); //排序
request.setFrom(0).setSize(5); //分页
request.setExplain(false); //获取说明信息
//高亮关键字
HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.preTags("<span class='red-font'>"); //设置前缀
highlightBuilder.postTags("</span>"); //设置后缀
highlightBuilder.field("otcName"); //设置高亮字段
request.highlighter(highlightBuilder);
SearchResponse response = request.get();
System.out.println("=====" + response);
System.out.println("=====" + response.getHits().getTotalHits());
for (SearchHit searchHit : response.getHits().getHits()) {
System.out.println(searchHit.sourceAsString());
}
client.close();
}
public void termSearch() {
TransportClient client = EsClient.getClient();
SearchRequestBuilder request = client.prepareSearch(EsClient.INDEX).setTypes(EsClient.TYPE)
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
request.setQuery(QueryBuilders.termQuery("otcCode", "630026"));
request.setPostFilter(QueryBuilders.rangeQuery("businessAmount").from(2).to(10)); //过滤器
request.addSort("tradeAt", SortOrder.DESC); //排序
request.setFrom(0).setSize(5); //分页
request.setExplain(false); //获取说明信息
SearchResponse response = request.get();
System.out.println("=====" + response);
System.out.println("=====" + response.getHits().getTotalHits());
for (SearchHit searchHit : response.getHits().getHits()) {
System.out.println(searchHit.sourceAsString());
}
client.close();
}
}