Elasticsearch QueryBuilder简单查询实现解析

  

elasticsearch中存储的全部文档

  

 Elasticsearch QueryBuilder简单查询实现解析

  

<强> 1. matchallquery()

  

matchAllQuery()方法用来匹配全部文档

        公开课QueryTest {   公共静态void main (String [] args) {//创建对象,设置集群名称和IP地址   ElasticsearchUtils es=new ElasticsearchUtils (“im_shan”,   “localhost”);   字符串indexName="学校",//索引名称   字符串typeName="学生",//类型名称//搜索全部文档   QueryBuilder QueryBuilder=QueryBuilders.matchAllQuery ();   SearchResponse SearchResponse=es。搜索者(indexName typeName,   queryBuilder);   SearchHits点击率=searchResponse.getHits ();   SearchHit [] searchHits=hits.getHits ();   int i=0;   (SearchHit SearchHit: searchHits) {   字符串名称=(字符串)searchHit.getSource () . get("名称");   字符串出生=(字符串)searchHit.getSource () . get("出生");   字符串的兴趣=(字符串)searchHit.getSource () . get(“利益”);   system . out。println (“- - - - - - - - - - - - -”+ (+ + i) +“- - - - - - - - - - - -”);   System.out.println(名称);   System.out.println(出生);   System.out.println(利益);   }      }   }      

控制台将输出全部文档

        输出:   - - - - - - - - - - - - 1 - - - - - - - - - - - -   艾米   1995-11-10   唱歌跳舞   2 - - - - - - - - - - - - - - - - - - - - - - - -   角   1996-05-01   唱歌阅读   3 - - - - - - - - - - - - - - - - - - - - - - - -   杰克逊   1995-08-01   篮球音乐阅读   4 - - - - - - - - - - - - - - - - - - - - - - - -   杰克   1995-03-21   足球音乐   5 - - - - - - - - - - - - - - - - - - - - - - - -   汤姆   1995-09-11   阅读音乐      

<强> 2。matchQuery(字符串名称、对象文本)

  

matchQuery (“filedname”、“价值”)匹配单个字段,匹配字段名为filedname,值为价值的文档

        java)视图复制//单个匹配,搜索的名字为杰克的文档   QueryBuilder QueryBuilder=QueryBuilders。matchQuery(“名字”,“杰克”);之前      

此时会输出一条记录,因为只有一个名称为杰克的文档

        - - - - - - - - - - - - 1 - - - - - - - - - - - -   杰克   1995-03-21   足球音乐      

<强> 3。multiMatchQuery(对象文本字符串…字段名)

  

多个字段匹配某一个值

        普通的副本(java)视图   QueryBuilder QueryBuilder=QueryBuilders.multiMatchQuery(“音乐”,   “名称”、“利益”);//搜索的名字中或利益中包含有音乐的文档(必须与音乐一致)      

控制台输出如下

        - - - - - - - - - - - - 1 - - - - - - - - - - - -   杰克   1995-03-21   足球音乐   2 - - - - - - - - - - - - - - - - - - - - - - - -   汤姆   1995-09-11   读音乐   3 - - - - - - - - - - - - - - - - - - - - - - - -   杰克逊   1995-08-01   篮球音乐阅读      

<强> 4. wildcardquery()模糊查询

  

模糊查询,& # 63;匹配单个字符,*匹配多个字符

        WildcardQueryBuilder queryBuilder=QueryBuilders.wildcardQuery(“名字”,   ”杰克* * ");//搜索名字中含有杰克文档(名称中只要包含杰克即可)      

,控制台输出如下

        - - - - - - - - - - - - 1 - - - - - - - - - - - -   杰克逊   1995-08-01   篮球音乐阅读   2 - - - - - - - - - - - - - - - - - - - - - - - -   杰克   1995-03-21   足球音乐      

<强> 5。使用BoolQueryBuilder进行复合查询

  

使用必须         java)视图复制//模糊查询   WildcardQueryBuilder queryBuilder1=QueryBuilders.wildcardQuery (   “名字”,”杰克* * ");//搜索名字中含有杰克的文档   WildcardQueryBuilder queryBuilder2=QueryBuilders.wildcardQuery (   “兴趣”、“* *”读);//搜索兴趣中含有读的文档      BoolQueryBuilder BoolQueryBuilder=QueryBuilders.boolQuery ();//名字中必须含有杰克,兴趣中必须含有阅读,相当于和   boolQueryBuilder.must (queryBuilder1);   boolQueryBuilder.must (queryBuilder2);

Elasticsearch QueryBuilder简单查询实现解析