当前位置: 首页 > news >正文

ElasticSearch学习(9)-Java接口查询操作

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

java 接口操作ElasticSearch进行查询

1.查询所有数据

        SearchRequestBuilder srb = client.prepareSearch("user").setTypes("basic_info");
        SearchResponse response = srb.setQuery(QueryBuilders.matchAllQuery()).execute().actionGet();
        SearchHits hits =response.getHits();

        for(SearchHit hit : hits){
            System.out.println(hit.getSourceAsString());
        }

执行结果:

{"name":"张三222","age":20,"address":"山东威海222","email":"zhagnsan_smile@163.com"}
{"name":"李四111","age":20,"address":"山东烟台","email":"zhagnsan_smile@163.com"}
{"name":"张三","age":20,"address":"山东威海","email":"zhagnsan_smile@163.com"}
{"name":"王五ggg","age":22,"address":"江西南昌","email":"zhagnsan_smile@163.com"}
{"name":"张三ggg","age":22,"address":"山东青岛","email":"zhagnsan_smile@163.com"}
{"name":"张三111","age":20,"address":"山东威海11","email":"zhagnsan_smile@163.com"}
{"name":"张三ggg","age":22,"address":"山东青岛","email":"zhagnsan_smile@163.com"}
{"name":"王五ggg","age":22,"address":"江西南昌","email":"zhagnsan_smile@163.com"}

2.分页查询

    SearchRequestBuilder srb = client.prepareSearch("user").setTypes("basic_info");
    SearchResponse response = srb.setQuery(QueryBuilders.matchAllQuery()).setFrom(0).setSize(3).execute().actionGet();
    for(SearchHit hit : hits){
     System.out.println(hit.getSourceAsString());
     }

执行结果:

{"name":"张三222","age":20,"address":"山东威海222","email":"zhagnsan_smile@163.com"}
{"name":"李四111","age":20,"address":"山东烟台","email":"zhagnsan_smile@163.com"}
{"name":"张三","age":20,"address":"山东威海","email":"zhagnsan_smile@163.com"}

3.排序查询

    SearchRequestBuilder srb = client.prepareSearch("user").setTypes("basic_info");
     SearchResponse response = srb.setQuery(QueryBuilders.matchAllQuery()).addSort("age", SortOrder.ASC).execute().actionGet();
    for(SearchHit hit : hits){
     System.out.println(hit.getSourceAsString());
     }

执行结果:

{"name":"张三222","age":20,"address":"山东威海222","email":"zhagnsan_smile@163.com"}
{"name":"李四111","age":20,"address":"山东烟台","email":"zhagnsan_smile@163.com"}
{"name":"张三","age":20,"address":"山东威海","email":"zhagnsan_smile@163.com"}
{"name":"张三111","age":20,"address":"山东威海11","email":"zhagnsan_smile@163.com"}
{"name":"王五ggg","age":22,"address":"江西南昌","email":"zhagnsan_smile@163.com"}
{"name":"张三ggg","age":22,"address":"山东青岛","email":"zhagnsan_smile@163.com"}
{"name":"张三ggg","age":22,"address":"山东青岛","email":"zhagnsan_smile@163.com"}
{"name":"王五ggg","age":22,"address":"江西南昌","email":"zhagnsan_smile@163.com"}

4.数据列的过滤

    SearchRequestBuilder srb = client.prepareSearch("user").setTypes("basic_info");
    SearchResponse response = srb.setQuery(QueryBuilders.matchAllQuery()).addSort("age", SortOrder.ASC).setFetchSource(new String[]{"name","age"},null).execute().actionGet();
    for(SearchHit hit : hits){
     System.out.println(hit.getSourceAsString());
     }

执行结果:

{"name":"张三222","age":20}
{"name":"李四111","age":20}
{"name":"张三","age":20}
{"name":"张三111","age":20}
{"name":"王五ggg","age":22}
{"name":"张三ggg","age":22}
{"name":"张三ggg","age":22}
{"name":"王五ggg","age":22}

5.简单条件查询

    SearchRequestBuilder srb = client.prepareSearch("user").setTypes("basic_info");
     SearchResponse response = srb.setQuery(QueryBuilders.matchQuery("name","张三")).setFetchSource(new String[]{"name","age"},null).execute().actionGet();

    for(SearchHit hit : hits){
     System.out.println(hit.getSourceAsString());
     }

执行结果:

{"name":"张三","age":20}
{"name":"张三ggg","age":22}
{"name":"张三222","age":20}
{"name":"张三ggg","age":22}
{"name":"张三111","age":20}

6.查询结果高亮显示

HighlightBuilder highlightBuilder = new HighlightBuilder();
        highlightBuilder.preTags("<h3><em>");
        highlightBuilder.postTags("</em><h3>");
        highlightBuilder.field("name");
        SearchResponse response = srb.setQuery(QueryBuilders.matchQuery("name","张三")).highlighter(highlightBuilder).addSort("age", SortOrder.ASC).execute().actionGet();
        SearchHits hits = response.getHits();

        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
            System.out.println(hit.getHighlightFields());
        }

执行结果:

{"name":"张三222","age":20,"address":"山东威海222","email":"zhagnsan_smile@163.com"}
{name=[name], fragments[[<h3><em>张</em><h3><h3><em>三</em><h3>222]]}
{"name":"张三","age":20,"address":"山东威海","email":"zhagnsan_smile@163.com"}
{name=[name], fragments[[<h3><em>张</em><h3><h3><em>三</em><h3>]]}
{"name":"张三111","age":20,"address":"山东威海11","email":"zhagnsan_smile@163.com"}
{name=[name], fragments[[<h3><em>张</em><h3><h3><em>三</em><h3>111]]}
{"name":"张三ggg","age":22,"address":"山东青岛","email":"zhagnsan_smile@163.com"}
{name=[name], fragments[[<h3><em>张</em><h3><h3><em>三</em><h3>ggg]]}
{"name":"张三ggg","age":22,"address":"山东青岛","email":"zhagnsan_smile@163.com"}
{name=[name], fragments[[<h3><em>张</em><h3><h3><em>三</em><h3>ggg]]}

7.组合多条件查询

场景1:must使用

        QueryBuilder b1 = QueryBuilders.matchPhraseQuery("name", "张三");
        QueryBuilder b2 = QueryBuilders.matchPhraseQuery("address", "山东");
        SearchResponse response = srb.setQuery(QueryBuilders.boolQuery().must(b1).must(b2)).execute().actionGet();
        SearchHits hits = response.getHits();

        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
        }

执行结果:

{"name":"张三","age":20,"address":"山东威海","email":"zhagnsan_smile@163.com"}
{"name":"张三ggg","age":22,"address":"山东青岛","email":"zhagnsan_smile@163.com"}
{"name":"张三222","age":20,"address":"山东威海222","email":"zhagnsan_smile@163.com"}
{"name":"张三ggg","age":22,"address":"山东青岛","email":"zhagnsan_smile@163.com"}
{"name":"张三111","age":20,"address":"山东威海11","email":"zhagnsan_smile@163.com"}

场景2: must与must_not组合使用

QueryBuilder b1 = QueryBuilders.matchPhraseQuery("name", "张三");
        QueryBuilder b2 = QueryBuilders.matchPhraseQuery("address", "青岛");
     
        SearchResponse response = srb.setQuery(QueryBuilders.boolQuery().must(b1).mustNot(b2)).execute().actionGet();
        SearchHits hits = response.getHits();

执行结果:

{"name":"张三","age":20,"address":"山东威海","email":"zhagnsan_smile@163.com"}
{"name":"张三222","age":20,"address":"山东威海222","email":"zhagnsan_smile@163.com"}
{"name":"张三111","age":20,"address":"山东威海11","email":"zhagnsan_smile@163.com"}

场景3: should使用

QueryBuilder b1 = QueryBuilders.matchPhraseQuery("name", "张三");
        QueryBuilder b2 = QueryBuilders.matchPhraseQuery("address", "山东");
        QueryBuilder b3 = QueryBuilders.rangeQuery("age").gte(20);

        SearchResponse response = srb.setQuery(QueryBuilders.boolQuery().must(b1).must(b2).should(b3)).addSort("age",SortOrder.DESC).execute().actionGet();
        SearchHits hits = response.getHits();

        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
         
        }

执行结果:

{"name":"张三ggg","age":22,"address":"山东青岛","email":"zhagnsan_smile@163.com"}
{"name":"张三ggg","age":22,"address":"山东青岛","email":"zhagnsan_smile@163.com"}
{"name":"张三222","age":20,"address":"山东威海222","email":"zhagnsan_smile@163.com"}
{"name":"张三","age":20,"address":"山东威海","email":"zhagnsan_smile@163.com"}
{"name":"张三111","age":20,"address":"山东威海11","email":"zhagnsan_smile@163.com"}

场景4:filter使用

QueryBuilder b1 = QueryBuilders.matchPhraseQuery("name", "张三");
        QueryBuilder b2 = QueryBuilders.matchPhraseQuery("address", "山东");
        QueryBuilder b3 = QueryBuilders.rangeQuery("age").gt(20);
     
        SearchResponse response = srb.setQuery(QueryBuilders.boolQuery().must(b1).must(b2).should(b3).filter(b3)).execute().actionGet();
        SearchHits hits = response.getHits();

        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
        }

执行结果:

{"name":"张三ggg","age":22,"address":"山东青岛","email":"zhagnsan_smile@163.com"}
{"name":"张三ggg","age":22,"address":"山东青岛","email":"zhagnsan_smile@163.com"}

转载于:https://my.oschina.net/u/2477500/blog/1616445

相关文章:

  • 转载:C/C++关于string.h头文件和string类
  • 开源USM之HIDS ossec
  • SVN的标准目录结构:trunk、branches、tags(转)
  • hdu 2844 混合背包【背包dp】
  • MySQL高可用架构之MHA
  • Js基础知识(四) - js运行原理与机制
  • Bootstrap your Django admin in 3 minutes
  • CALayer动画专题
  • 虽然看的一知半解,但是感觉有一天用到时会很有用,转
  • B1016. 部分A+B (15)
  • OSGi与第一层语义
  • 如何避免TiddlyWiki变慢
  • 山寨一个 Promise
  • 重写、覆盖、重载、多态几个概念的区别分析
  • Ankara prefabrik evler
  • [Vue CLI 3] 配置解析之 css.extract
  • __proto__ 和 prototype的关系
  • Android优雅地处理按钮重复点击
  • crontab执行失败的多种原因
  • CSS实用技巧
  • Docker: 容器互访的三种方式
  • gf框架之分页模块(五) - 自定义分页
  • interface和setter,getter
  • java第三方包学习之lombok
  • Linux中的硬链接与软链接
  • Node + FFmpeg 实现Canvas动画导出视频
  • NSTimer学习笔记
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 给初学者:JavaScript 中数组操作注意点
  • 开源地图数据可视化库——mapnik
  • 码农张的Bug人生 - 见面之礼
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 数组大概知多少
  • 追踪解析 FutureTask 源码
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • #include<初见C语言之指针(5)>
  • $ git push -u origin master 推送到远程库出错
  • $.ajax中的eval及dataType
  • $GOPATH/go.mod exists but should not goland
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (SpringBoot)第二章:Spring创建和使用
  • (八)Spring源码解析:Spring MVC
  • (办公)springboot配置aop处理请求.
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (四)鸿鹄云架构一服务注册中心
  • (一一四)第九章编程练习
  • (轉貼) UML中文FAQ (OO) (UML)
  • **PHP分步表单提交思路(分页表单提交)
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET Reactor简单使用教程