Elasticsearch日常开发
2020-08-12 14:51:37
每次遇到ES开发,一般都是查询es里面的数据,今天我教大家一个简单的es的查询。废话不多说,直接上代码。
在pom文件中引入
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>
// 初始化api客户端 public RestHighLevelClient client = new RestHighLevelClient( RestClient.builder( new HttpHost("localhost", 9200, "http") ));
其中的localhost和9200需要小伙伴们自己配置,不管你是写配置文件也好,代码里面写死也可以,我目前是写死的。client就是连接es的。
public Map<String,Object> findUserName(String sex,String age) throws IOException { RequestOptions.Builder options = RequestOptions.DEFAULT.toBuilder(); //设置连接的库名 即_index SearchRequest searchRequest = new SearchRequest("mymayikt"); /// 搜索源构建对象 SearchSourceBuilder search = new SearchSourceBuilder(); //多条件查询 BoolQueryBuilder boolBuilder=QueryBuilders.boolQuery();
//这个地方就是多条件查询的时候,需要写的,当然也可以在外面进行一个判空处理
/*
if(sex不为空不为null){
boolBuilder.must(QueryBuilders.matchPhraseQuery("sex", sex));
}
*/
boolBuilder.must(QueryBuilders.matchPhraseQuery("sex", sex)); boolBuilder.must(QueryBuilders.matchPhraseQuery("age",age)); //如果需要分页查询则进行入参 int page = 2; // 页码 int size = 10; // 每页显示的条数 int index = (page - 1) * size; search.from(0); search.size(10); //将多条件打包放入 search.query(boolBuilder); searchRequest.source(search); SearchResponse response = client.search(searchRequest, options.build()); SearchHits hits = response.getHits(); int i = 0; System.out.println("共:"+hits.getTotalHits()+"数据"); List list = new ArrayList(); for (SearchHit hit :hits.getHits()) { list.add(hit.getSourceAsMap()); System.out.println("ES "+hit.getSourceAsMap()); } Map<String,Object> map = new HashMap<>(); map.put("totaPage",hits.getTotalHits()); map.put("list",list); return map; }
下面看es的服务端的数据
es的搭建与服务端的包请自行下载。我这里用的是7.3.1版本的es 。 找到 elasticsearch-7.3.1-windows-x86_64\elasticsearch-7.3.1\bin 的bin文件夹
双击 elasticsearch.bat就可以启动es服务
然后在浏览器访问 localhost:9200或者127.0.0.1:9200 看到如下的版本好就代表es启动成功。
想要操作es的服务端可以下载 elasticsearch-head-master 找到index.html文件 用浏览器打开
打开之后输入localhost:9200就可以连接成功
一定要爱着点儿什么,恰似草木对光阴的钟情。