打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Elasticsearch

elasticsearch中存储的全部文档

1.matchAllQuery()

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

public class QueryTest {      public static void main(String[] args) {          //创建对象,设置集群名称和IP地址          ElasticsearchUtils es = new ElasticsearchUtils("im_shan",                  "localhost");          String indexName = "school";//索引名称          String typeName = "student";//类型名称          //搜索全部文档          QueryBuilder queryBuilder = QueryBuilders.matchAllQuery();          SearchResponse searchResponse = es.searcher(indexName, typeName,              queryBuilder);          SearchHits hits = searchResponse.getHits();          SearchHit[] searchHits = hits.getHits();          int i = 0;          for (SearchHit searchHit : searchHits) {              String name = (String) searchHit.getSource().get("name");              String birth = (String) searchHit.getSource().get("birth");              String interest = (String) searchHit.getSource().get("interest");              System.out.println("-------------" + (++i) + "------------");              System.out.println(name);              System.out.println(birth);              System.out.println(interest);          }        }  }  

控制台将输出全部文档

输出:  -------------1------------  amy  1995-11-10  singing dancing  -------------2------------  angle  1996-05-01  singing reading  -------------3------------  jackson  1995-08-01  basketball music reading  -------------4------------  jack  1995-03-21  football music  -------------5------------  tom  1995-09-11  reading music  

2.matchQuery(String name,Object  text)

matchQuery("filedname","value")匹配单个字段,匹配字段名为filedname,值为value的文档

java] view plain copy //单个匹配,搜索name为jack的文档  QueryBuilder queryBuilder = QueryBuilders.matchQuery("name", "jack"); 

此时会输出一条记录,因为只有一个name为jack的文档

-------------1------------  jack  1995-03-21  football music 

 3.multiMatchQuery(Object text, String... fieldNames)

多个字段匹配某一个值

[java] view plain copy QueryBuilder queryBuilder = QueryBuilders.multiMatchQuery("music",             "name", "interest");//搜索name中或interest中包含有music的文档(必须与music一致)  

控制台输出如下

-------------1------------  jack  1995-03-21  football music  -------------2------------  tom  1995-09-11  reading music  -------------3------------  jackson  1995-08-01  basketball music reading  

4.wildcardQuery()模糊查询

模糊查询,?匹配单个字符,*匹配多个字符

 WildcardQueryBuilder queryBuilder = QueryBuilders.wildcardQuery("name",              "*jack*");//搜索名字中含有jack文档(name中只要包含jack即可)  

控制台输出如下

-------------1------------  jackson  1995-08-01  basketball music reading  -------------2------------  jack  1995-03-21  football music

 5.使用BoolQueryBuilder进行复合查询

使用must

java] view plain copy //模糊查询  WildcardQueryBuilder queryBuilder1 = QueryBuilders.wildcardQuery(              "name", "*jack*");//搜索名字中含有jack的文档  WildcardQueryBuilder queryBuilder2 = QueryBuilders.wildcardQuery(              "interest", "*read*");//搜索interest中含有read的文档    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();  //name中必须含有jack,interest中必须含有read,相当于and  boolQueryBuilder.must(queryBuilder1);  boolQueryBuilder.must(queryBuilder2);  

控制台输出如下(name中必须含有jack,interest中必须含有read,只有一条文档匹配):

-------------1------------  jackson  1995-08-01  basketball music reading  

使用should

WildcardQueryBuilder queryBuilder1 = QueryBuilders.wildcardQuery(              "name", "*jack*");//搜索名字中含有jack的文档  WildcardQueryBuilder queryBuilder2 = QueryBuilders.wildcardQuery(              "interest", "*read*");//搜索interest中含有read的文档    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();  //name中含有jack或者interest含有read,相当于or  boolQueryBuilder.should(queryBuilder1);  boolQueryBuilder.should(queryBuilder2);  

控制台输出(name中含有jack或者interest中含有read的都将被匹配):

------------1------------  jackson  1995-08-01  basketball music reading  -------------2------------  angle  1996-05-01  singing reading  -------------3------------  jack  1995-03-21  football music  -------------4------------  tom  1995-09-11  reading music

6.分页
通过from和size参数进行分页。From定义查询结果开始位置,size定义返回的hits(一条hit对应一条记录)最大数量。

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ElasticSearch的基本用法与集群搭建
中间件:ElasticSearch组件RestHighLevelClient用法详解
Lucene的学习
springboot中ElasticSearch入门与进阶:组合查询、Aggregation聚合查询(你想要的都有)
ElasticSearch如何一次查询出全部数据——基于Scroll
Lucene 3.6.1:中文分词、创建索引库、排序、多字段分页查询以及高亮显示
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服