`
wbj0110
  • 浏览: 1557408 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

5.分布式搜索elasticsearch java API )------搜索

阅读更多

elasticsearch的查询是通过执行json格式的查询条件,在java api中就是构造QueryBuilder对象,elasticsearch完全支持queryDSL风格的查询方式,QueryBuilder的构建类是QueryBuilders,filter的构建类是FilterBuilders。下面是构造QueryBuilder的例子:

[java] view plaincopy
  1. import static org.elasticsearch.index.query.FilterBuilders.*;   
  2.     import static org.elasticsearch.index.query.QueryBuilders.*;   
  3.        
  4.     QueryBuilder qb1 = termQuery("name""kimchy");   
  5.        
  6.     QueryBuilder qb2 = boolQuery()   
  7.                         .must(termQuery("content""test1"))   
  8.                         .must(termQuery("content""test4"))   
  9.                         .mustNot(termQuery("content""test2"))   
  10.                         .should(termQuery("content""test3"));   
  11.        
  12.     QueryBuilder qb3 = filteredQuery(   
  13.                 termQuery("name.first""shay"),    
  14.                 rangeFilter("age")   
  15.                     .from(23)   
  16.                     .to(54)   
  17.                     .includeLower(true)   
  18.                     .includeUpper(false)   
  19.                 );  

其中qb1构造了一个TermQuery,对name这个字段进行项搜索,项是最小的索引片段,这个查询对应lucene本身的TermQuery。 qb2构造了一个组合查询(BoolQuery),其对应lucene本身的BooleanQuery,可以通过must、should、mustNot方法对QueryBuilder进行组合,形成多条件查询。 qb3构造了一个过滤查询,就是在TermQuery的基础上添加一个过滤条件RangeFilter,这个范围过滤器将限制查询age字段大于等于23,小于等于54的结果。除了这三个,elasticsearch还支持很多种类的查询方式,迟点写个介绍。

构造好了Query就要传到elasticsearch里面进行查询,下面是例子:

[java] view plaincopy
  1. SearchResponse response = client.prepareSearch("test")   
  2.         .setQuery(query)   
  3.         .setFrom(0).setSize(60).setExplain(true)   
  4.         .execute()   
  5.         .actionGet();  

这句的意思是,查询test索引,查询条件为query,从第0条记录开始,最多返回60条记录。返回结果为SearchResponse,下面解析SearchResponse:

[java] view plaincopy
  1. SearchHits hits = searchResponse.hits();  
  2.         for (int i = 0; i < 60; i++) {  
  3.             System.out.println(hits.getAt(i).getSource().get("field"));  
  4.         }  

获得SearchResponse中的SearchHits,然后hits.getAt(i).getSource().get("field")获得field字段的值。

分享到:
评论

相关推荐

    分布式搜索 elasticsearch 方案研究 - Java API

    分布式搜索elasticsearch java API 之(一)--- 与集群交互 2 分布式搜索elasticsearch java API 之(二)--- put Mapping定义索引字段属性 3 分布式搜索elasticsearch java API 之(三)--- 索引数据 6 分布式搜索...

    elasticsearch-7.17.3-linux-x86-64.tar.gz

    Elasticsearch是一个基于Java编写的高性能搜索引擎,使用了分布式架构,可以处理海量的数据,并提供实时搜索和分析能力。Elasticsearch的数据存储和搜索能力非常强大,支持文本、数字、地理位置等多种类型的数据,并...

    ES(elasticSearch6.4.0)之java API源码demo

    ElasticSearch是个开源的分布式的搜索引擎,它可以近乎实时的存储、检索数据;... ElasticSearch提供javaAPI,使用者可以通过javaAPI调用,但是7.0以后不会提供普通javaAPI,需要使用高级APIrest-high-level调用。

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战)

    好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个开源的高拓展的分布式全文搜索引擎它可以近乎实时的存储、检索数据;本身拓展性很好,可以拓展到上百台服务器,处理PB级别的数据。es也是用Java开发并使用...

    海量技术栈!1200多集-3个JAVA大型项目集群 大型电商架构+众筹项目架构+在线教育项目

    真正的海量技术栈,虽然是3个JAVA的大型项目集群课程,但是其中却包含了非常的技术内容,非常的强大,推荐给有JAVA开发基础和工程师们进行学习...├─103、全文检索-ElasticSearch-Docker安装ES.avi ├─104、全文检索

    电商系统,电商平台后台二次开发优秀模板,采用最新java技术栈,个人珍藏资源

    Elasticsearch | 搜索引擎 | [https://github.com/elastic/elasticsearch](https://github.com/elastic/elasticsearch) RabbitMq | 消息队列 | [https://www.rabbitmq.com/](https://www.rabbitmq.com/) Redis | ...

    Elasticsearch java工具类

    使用springboot集成了elasticsearch,封装了常用api,并使用自定义注解创建mapping,简化开发,开箱即用。注:使用的是elasticsearch 5.x版本

    基于SpringBoot + Spring Cloud Alibaba的微服务.zip

    - 全文检索引擎:ElasticSearch - 分布式链路追踪:SkyWalking - 分布式文件系统:Alibaba OSS - 分布式系统网关:Spring Cloud Gateway - 分布式协调系统:Spring Cloud Alibaba Nacos Server - 分布式配置中心:...

    centos7.5分布式平台搭建.docx

    14. Elasticsearch与reactivesearch快速构建搜索项目 58 15. kibana 59 15.1. 配置kibana配置文件 59 15.2. 启动、停止服务 59 15.3. 登陆地址 59 15.4. 汉化 59 16. Neo4j 59 16.1. 下载地址: 59 16.2. 解压缩: ...

    单点登录源码

    Solr & Elasticsearch | 分布式全文搜索引擎 | [http://lucene.apache.org/solr/](http://lucene.apache.org/solr/) [https://www.elastic.co/](https://www.elastic.co/) Quartz | 作业调度框架 | ...

    elasticsearch java操作的api实例

    包含所因的索引建立、删除、查看,批量创建索引;搜索Query、过滤器 、分组高亮显示;以及创建Mapping

    基于Luence的分布式搜索引擎ElasticSearch搜索实例演示(JavaAPI)

    启动解压目录下的bin名称的文件夹,双击elasticsearch.bat文件,就可以启动elasticsearch,启动成功界面如下:启动成功后,会在解压目录下增加2个文件件,data用于数据存储,logs用于日志记录,可以自己创建plugins目录中...

    ElasticSearch分布式全文检索入门视频教程

    Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 我们建立一个网站或应用程序,并要...

    word源码java-ElasticSearch-Simple-Share:组内关于ElasticSearch的简单使用说明内容分享

    Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 Elasticsearch 不仅仅是 Lucene,

    搜索引擎-----面试笔记1

    elasticsearch 基于 lucene,隐藏了 lucene 的复杂性,提供了简单易用的 restful api / Java api 接口(另外还有其他语言的 api 接口)。 分布式的文档存储引擎 分布式的搜索引擎和分析引擎 分布式,支持 PB ...

    springboot参考指南

    26.1.5. 模板引擎 vi. 26.1.6. 错误处理 vii. 26.1.7. Spring HATEOAS ii. 26.2. JAX-RS和Jersey iii. 26.3. 内嵌servlet容器支持 i. 26.3.1. Servlets和Filters ii. 26.3.2. EmbeddedWebApplicationContext iii. ...

    elasticsearch-sentiment:基于ElasticSearch的分布式舆情检索统计服务

    项目框架elasticsearch-parent: jar和插件依赖工程elasticsearch-dao: 数据接口层elasticsearch-redis: 数据缓存层或消息队列层elasticsearch-web: API接口服务层elasticsearch-core: 核心业务层备注: 框架持续更新...

    阿里云javasdk源码-java-ssm-qingcheng:java-ssm-qingcheng

    Redis(缓存穿透、缓存击穿、缓存雪崩)、elasticsearch搜索(Java rest高级api)、消息中间件(RabbitMQ发送与接受消息)、阿里云通信、开源单点登陆系统CAS、分布式事务、微信扫码支付(微信支付二维码、支付回调逻辑处理...

Global site tag (gtag.js) - Google Analytics