1.导入es依赖 我使用的es是7.13.0的版本
7.13.0 org.elasticsearch.client elasticsearch-rest-high-level-client${elasticsearch.version} org.elasticsearch elasticsearchorg.elasticsearch.client elasticsearch-rest-clientorg.elasticsearch elasticsearch${elasticsearch.version} org.elasticsearch.client elasticsearch-rest-client${elasticsearch.version} commons-logging commons-loggingorg.springframework.boot spring-boot-starter-webcom.alibaba fastjson
2.直接上代码
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpHost;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
public class SearchTest {
public static void main(String[] args) {
try {
//通过ES提供的 构造器 来建立起和ES之间的远程连接
RestClientBuilder restClientBuilder =RestClient.builder(new HttpHost("192.168.22.130",19200,"http"));
//创建高层对象准备操作ES创建的连接
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);
//搜索资源构造器
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//创建复合查询条件对象
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//如以下条件:查询名字中有李四的并且年龄必须大于20的
BoolQueryBuilder must = boolQueryBuilder.should(QueryBuilders.matchQuery("name", "张三")).must(QueryBuilders.matchQuery("age", 18));
//需要条件
SearchSourceBuilder query = searchSourceBuilder.query(must);
//创建一个SearchRequest,查询的请求对象
SearchRequest request = new SearchRequest("aa").source(query);
//得到了一个搜索响应对象
SearchResponse search = restHighLevelClient.search(request, RequestOptions.DEFAULT);
SearchHit[] hits = search.getHits().getHits();
for (SearchHit hit : hits) {
String str = hit.toString();
//转换成JSON格式
JSonObject jsonObject = JSONObject.parseObject(str);
JSonObject source = jsonObject.getJSonObject("_source");
String name = source.getString("name");
Integer age = source.getInteger("age");
System.out.println("name:"+name+","+"age:"+age);
}
}catch (Exception e){
e.printStackTrace();
}
}
}
3.输出结果
name:张三,age:18 name:张三,age:18



