Elasticsearch查到多种多样
1、matchAllQuery查询所有索引
public static void matchAllQueryTest(RestHighLevelClient client) throws Exception{ // 1、创建search请求 SearchRequest searchRequest = new SearchRequest(); searchRequest.indices("it"); //索引名称 searchRequest.types("_doc");//类型名称 // 2、用SearchSourceBuilder来构造查询请求体 ,请仔细查看它的方法,构造各种查询的方法都在这。 SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); //搜索全部文档 sourceBuilder.query(QueryBuilders.matchAllQuery()); //将请求体加入到请求中 searchRequest.source(sourceBuilder); //3、发送请求 SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); SearchHits hits = searchResponse.getHits(); SearchHit[] searchHits = hits.getHits(); for (SearchHit searchHit : searchHits) { String source = searchHit.getSourceAsString(); System.out.println(source); } }
测试结果:
{"bookName":"C++","publishDate":"2019-06-30T11:45:00.985Z","sales":"100.00"} {"bookName":"java","publishDate":"2013-01-30","sales":"100.00"} {"bookName":"python","publishDate":"2019-06-30T11:45:00.735Z","sales":"100.00","reason":"daily update","updated":"2019-07-13T02:51:27.915Z"}
2、matchQuery(filedName,value)匹配单个字段,匹配字段名为filedName,值为value的文档
public static void matchQueryTest(RestHighLevelClient client) throws Exception{ // 1、创建search请求 SearchRequest searchRequest = new SearchRequest(); searchRequest.indices("it"); //索引名称 searchRequest.types("_doc");//类型名称 // 2、用SearchSourceBuilder来构造查询请求体 ,请仔细查看它的方法,构造各种查询的方法都在这。 SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); //搜索全部文档 sourceBuilder.query(QueryBuilders.matchQuery("bookName", "java")); //将请求体加入到请求中 searchRequest.source(sourceBuilder); //3、发送请求 SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); SearchHits hits = searchResponse.getHits(); SearchHit[] searchHits = hits.getHits(); for (SearchHit searchHit : searchHits) { String source = searchHit.getSourceAsString(); System.out.println(source); } }
测试结果:
{"bookName":"java","publishDate":"2013-01-30","sales":"100.00"}
3、multiMatchQuery(Object text, String... fieldNames)多个字段匹配某一个值
public static void multiMatchQueryTest(RestHighLevelClient client) throws Exception{ // 1、创建search请求 SearchRequest searchRequest = new SearchRequest(); searchRequest.indices("it"); //索引名称 searchRequest.types("_doc");//类型名称 // 2、用SearchSourceBuilder来构造查询请求体 ,请仔细查看它的方法,构造各种查询的方法都在这。 SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); //搜索文档 QueryBuilder queryBuilder = QueryBuilders.multiMatchQuery("java", "bookName", "sales"); sourceBuilder.query(queryBuilder); //将请求体加入到请求中 searchRequest.source(sourceBuilder); //3、发送请求 SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); SearchHits hits = searchResponse.getHits(); SearchHit[] searchHits = hits.getHits(); for (SearchHit searchHit : searchHits) { String source = searchHit.getSourceAsString(); System.out.println(source); } }
测试结果
{"bookName":"java","publishDate":"2013-01-30","sales":"100.00"}
4、wildcardQuery()模糊查询;模糊查询,?匹配单个字符,*匹配多个字符
public static void wildcardQueryTest(RestHighLevelClient client) throws Exception{ // 1、创建search请求 SearchRequest searchRequest = new SearchRequest(); searchRequest.indices("it"); //索引名称 searchRequest.types("_doc");//类型名称 // 2、用SearchSourceBuilder来构造查询请求体 ,请仔细查看它的方法,构造各种查询的方法都在这。 SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); //搜索文档 //搜索名字中含有python文档(bookName中只要包含pyton即可) // WildcardQueryBuilder queryBuilder = QueryBuilders.wildcardQuery("bookName", // "*python*"); WildcardQueryBuilder queryBuilder = QueryBuilders.wildcardQuery("reason", "*update*"); sourceBuilder.query(queryBuilder); //将请求体加入到请求中 searchRequest.source(sourceBuilder); //3、发送请求 SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); SearchHits hits = searchResponse.getHits(); SearchHit[] searchHits = hits.getHits(); for (SearchHit searchHit : searchHits) { String source = searchHit.getSourceAsString(); System.out.println(source); } }
测试结果:
{"bookName":"python","publishDate":"2019-06-30T11:45:00.735Z","sales":"100.00","reason":"daily update","updated":"2019-07-13T02:51:27.915Z"}
5、BoolQueryBuilder复合查询
public static void boolQueryBuilderTest(RestHighLevelClient client) throws Exception{ // 1、创建search请求 SearchRequest searchRequest = new SearchRequest(); searchRequest.indices("it"); //索引名称 searchRequest.types("_doc");//类型名称 // 2、用SearchSourceBuilder来构造查询请求体 ,请仔细查看它的方法,构造各种查询的方法都在这。 SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); //搜索文档 //模糊查询 搜索名字中含有pytond的文档 WildcardQueryBuilder queryBuilder1 = QueryBuilders.wildcardQuery( "bookName", "*python*"); WildcardQueryBuilder queryBuilder2 = QueryBuilders.wildcardQuery( "reason", "*update*");//搜索interest中含有read的文档 BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); //bookName中必须含有python,reason中必须含有update,相当于and boolQueryBuilder.must(queryBuilder1); boolQueryBuilder.must(queryBuilder2); sourceBuilder.query(boolQueryBuilder); //将请求体加入到请求中 searchRequest.source(sourceBuilder); //3、发送请求 SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); SearchHits hits = searchResponse.getHits(); SearchHit[] searchHits = hits.getHits(); for (SearchHit searchHit : searchHits) { String source = searchHit.getSourceAsString(); System.out.println(source); } }
测试结果:
{"bookName":"python","publishDate":"2019-06-30T11:45:00.735Z","sales":"100.00","reason":"daily update","updated":"2019-07-13T02:51:27.915Z"}
public static void boolQueryBuilderTest(RestHighLevelClient client) throws Exception{ // 1、创建search请求 SearchRequest searchRequest = new SearchRequest(); searchRequest.indices("it"); //索引名称 searchRequest.types("_doc");//类型名称 // 2、用SearchSourceBuilder来构造查询请求体 ,请仔细查看它的方法,构造各种查询的方法都在这。 SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); //搜索文档 //搜索bookName中含有pytond的文档 WildcardQueryBuilder queryBuilder1 = QueryBuilders.wildcardQuery( "bookName", "*python*"); //搜索reason中含有update的文档 WildcardQueryBuilder queryBuilder2 = QueryBuilders.wildcardQuery( "bookName", "*java*"); BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); //bookName中含有python或者bookName含有java,相当于or boolQueryBuilder.should(queryBuilder1); boolQueryBuilder.should(queryBuilder2); sourceBuilder.query(boolQueryBuilder); //将请求体加入到请求中 searchRequest.source(sourceBuilder); //3、发送请求 SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); SearchHits hits = searchResponse.getHits(); SearchHit[] searchHits = hits.getHits(); for (SearchHit searchHit : searchHits) { String source = searchHit.getSourceAsString(); System.out.println(source); } }
测试结果:
{"bookName":"java","publishDate":"2013-01-30","sales":"100.00"} {"bookName":"python","publishDate":"2019-06-30T11:45:00.735Z","sales":"100.00","reason":"daily update","updated":"2019-07-13T02:51:27.915Z"}
本文暂时没有评论,来添加一个吧(●'◡'●)