Elasticsearch_条件查询QueryBuilder

1 查询所有(matchAllQuery)

1)源代码

@Test

       public void matchAllQuery() {

             

              // 1 执行查询

              SearchResponse searchResponse = client.prepareSearch("blog").setTypes("article")

                            .setQuery(QueryBuilders.matchAllQuery()).get();

 

              // 2 打印查询结果

              SearchHits hits = searchResponse.getHits(); // 获取命中次数,查询结果有多少对象

              System.out.println("查询结果有:" + hits.getTotalHits() + "条");

 

              Iterator<SearchHit> iterator = hits.iterator();

 

              while (iterator.hasNext()) {

                     SearchHit searchHit = iterator.next(); // 每个查询对象

 

                     System.out.println(searchHit.getSourceAsString()); // 获取字符串格式打印

              }

 

              // 3 关闭连接

              client.close();

       }

 

 

2 对所有字段分词查询(queryStringQuery)

1)源代码

       @Test

       public void query() {

              // 1 条件查询

              SearchResponse searchResponse = client.prepareSearch("blog").setTypes("article")

                            .setQuery(QueryBuilders.queryStringQuery("全文")).get();

 

              // 2 打印查询结果

              SearchHits hits = searchResponse.getHits(); // 获取命中次数,查询结果有多少对象

              System.out.println("查询结果有:" + hits.getTotalHits() + "条");

             

              Iterator<SearchHit> iterator = hits.iterator();

             

              while (iterator.hasNext()) {

                     SearchHit searchHit = iterator.next(); // 每个查询对象

                    

                     System.out.println(searchHit.getSourceAsString()); // 获取字符串格式打印

              }

             

              // 3 关闭连接

              client.close();

       }

 

 

3 通配符查询(wildcardQuery)

*:表示多个字符(任意的字符)

?:表示单个字符

1)源代码

@Test

       public void wildcardQuery() {

 

              // 1 通配符查询

              SearchResponse searchResponse = client.prepareSearch("blog").setTypes("article")

                            .setQuery(QueryBuilders.wildcardQuery("content", "*全*")).get();

 

              // 2 打印查询结果

              SearchHits hits = searchResponse.getHits(); // 获取命中次数,查询结果有多少对象

              System.out.println("查询结果有:" + hits.getTotalHits() + "条");

 

              Iterator<SearchHit> iterator = hits.iterator();

 

              while (iterator.hasNext()) {

                     SearchHit searchHit = iterator.next(); // 每个查询对象

 

                     System.out.println(searchHit.getSourceAsString()); // 获取字符串格式打印

              }

 

              // 3 关闭连接

              client.close();

       }

 

 

4 词条查询(TermQuery)

1)源代码

@Test

       public void termQuery() {

             

              // 1 第一field查询

              SearchResponse searchResponse = client.prepareSearch("blog").setTypes("article")

                            .setQuery(QueryBuilders.termQuery("content", "全")).get();

             

              // 2 打印查询结果

              SearchHits hits = searchResponse.getHits(); // 获取命中次数,查询结果有多少对象

              System.out.println("查询结果有:" + hits.getTotalHits() + "条");

 

              Iterator<SearchHit> iterator = hits.iterator();

 

              while (iterator.hasNext()) {

                     SearchHit searchHit = iterator.next(); // 每个查询对象

 

                     System.out.println(searchHit.getSourceAsString()); // 获取字符串格式打印

              }

 

              // 3 关闭连接

              client.close();

       }

 

 

5 模糊查询(fuzzy)

 

@Test

       public void fuzzy() {

             

              // 1 模糊查询

              SearchResponse searchResponse = client.prepareSearch("blog").setTypes("article")

                            .setQuery(QueryBuilders.fuzzyQuery("title", "lucene")).get();

             

              // 2 打印查询结果

              SearchHits hits = searchResponse.getHits(); // 获取命中次数,查询结果有多少对象

              System.out.println("查询结果有:" + hits.getTotalHits() + "条");

 

              Iterator<SearchHit> iterator = hits.iterator();

 

              while (iterator.hasNext()) {

                     SearchHit searchHit = iterator.next(); // 每个查询对象

 

                     System.out.println(searchHit.getSourceAsString()); // 获取字符串格式打印

              }

 

              // 3 关闭连接

              client.close();

       }

 

6 映射相关操作

1)源代码

@Test

       public void createMapping() throws Exception {

             

              // 1设置mapping

              XContentBuilder builder = XContentFactory.jsonBuilder()

                            .startObject()

                                   .startObject("article")

                                          .startObject("properties")

                                                 .startObject("id1")

                                                        .field("type", "string")

                                                        .field("store", "yes")

                                                 .endObject()

                                                 .startObject("title2")

                                                        .field("type", "string")

                                                        .field("store", "no")

                                                 .endObject()

                                                 .startObject("content")

                                                        .field("type", "string")

                                                        .field("store", "yes")

                                                 .endObject()

                                          .endObject()

                                   .endObject()

                            .endObject();

 

              // 2 添加mapping

              PutMappingRequest mapping = Requests.putMappingRequest("blog4").type("article").source(builder);

             

              client.admin().indices().putMapping(mapping).get();

             

              // 3 关闭资源

              client.close();

       }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值