SpringBoot整合elasticsearch-rest-high-level-client
做复杂的搜索,
完整springboot项目,修改配置可直接跑,最低要求jdk8
https://github.com/nalipiaoxiang/ElasticSearchDemo.git
// 构建搜索
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
// 查询条件很多,如果做搜索时有些选项可填可不填,可空克不空
// 创建条件查询
BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();
// 条件一
boolBuilder.must(QueryBuilders.matchPhraseQuery("字段1", "xx"));
// 条件二
boolBuilder.must(QueryBuilders.matchPhraseQuery("字段2", "xx"));
// 带范围的
// searchSourceBuilder.postFilter(QueryBuilders.rangeQuery("某个是数的字段").gte("gte大于等于").lte("lte小于等于"));
// 排个序
// searchSourceBuilder.sort("排序字段", SortOrder.DESC);
// 分个页(from从第几条开始,size每页显示几条)
// searchSourceBuilder.from(0).size(10);
// 将条件添加进构造的搜索
searchSourceBuilder.query(boolBuilder);
// 查询所有(这条和上面这条只能生效一个,有条件就不能匹配所有)
// searchSourceBuilder.query(QueryBuilders.matchAllQuery());
SearchRequest searchRequest = new SearchRequest();
// 设置索引
searchRequest.indices("logstash-apigatewaytracelogger-dev-2019.05.10");
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
SearchHits searchHits = searchResponse.getHits();
System.out.println("查到数目:" + searchHits.getTotalHits());
SearchHit[] hits = searchHits.getHits();
ArrayList<String> list = new ArrayList<String>();
for (SearchHit hit : hits) {
String json = hit.getSourceAsString();
list.add(json);
}