elasticsearch的查询是通过执行json格式的查询条件,在java api中就是构造QueryBuilder对象,elasticsearch完全支持queryDSL风格的查询方式,QueryBuilder的构建类是QueryBuilders,filter的构建类是FilterBuilders。下面是构造QueryBuilder的例子:
- import static org.elasticsearch.index.query.FilterBuilders.*;
- import static org.elasticsearch.index.query.QueryBuilders.*;
- QueryBuilder qb1 = termQuery("name", "kimchy");
- QueryBuilder qb2 = boolQuery()
- .must(termQuery("content", "test1"))
- .must(termQuery("content", "test4"))
- .mustNot(termQuery("content", "test2"))
- .should(termQuery("content", "test3"));
- QueryBuilder qb3 = filteredQuery(
- termQuery("name.first", "shay"),
- rangeFilter("age")
- .from(23)
- .to(54)
- .includeLower(true)
- .includeUpper(false)
- );
其中qb1构造了一个TermQuery,对name这个字段进行项搜索,项是最小的索引片段,这个查询对应lucene本身的TermQuery。 qb2构造了一个组合查询(BoolQuery),其对应lucene本身的BooleanQuery,可以通过must、should、mustNot方法对QueryBuilder进行组合,形成多条件查询。 qb3构造了一个过滤查询,就是在TermQuery的基础上添加一个过滤条件RangeFilter,这个范围过滤器将限制查询age字段大于等于23,小于等于54的结果。除了这三个,elasticsearch还支持很多种类的查询方式,迟点写个介绍。
构造好了Query就要传到elasticsearch里面进行查询,下面是例子:
- SearchResponse response = client.prepareSearch("test")
- .setQuery(query)
- .setFrom(0).setSize(60).setExplain(true)
- .execute()
- .actionGet();
这句的意思是,查询test索引,查询条件为query,从第0条记录开始,最多返回60条记录。返回结果为SearchResponse,下面解析SearchResponse:
- SearchHits hits = searchResponse.hits();
- for (int i = 0; i < 60; i++) {
- System.out.println(hits.getAt(i).getSource().get("field"));
- }
获得SearchResponse中的SearchHits,然后hits.getAt(i).getSource().get("field")获得field字段的值。
相关推荐
分布式搜索elasticsearch java API 之(一)--- 与集群交互 2 分布式搜索elasticsearch java API 之(二)--- put Mapping定义索引字段属性 3 分布式搜索elasticsearch java API 之(三)--- 索引数据 6 分布式搜索...
Elasticsearch是一个基于Java编写的高性能搜索引擎,使用了分布式架构,可以处理海量的数据,并提供实时搜索和分析能力。Elasticsearch的数据存储和搜索能力非常强大,支持文本、数字、地理位置等多种类型的数据,并...
ElasticSearch是个开源的分布式的搜索引擎,它可以近乎实时的存储、检索数据;... ElasticSearch提供javaAPI,使用者可以通过javaAPI调用,但是7.0以后不会提供普通javaAPI,需要使用高级APIrest-high-level调用。
好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个开源的高拓展的分布式全文搜索引擎它可以近乎实时的存储、检索数据;本身拓展性很好,可以拓展到上百台服务器,处理PB级别的数据。es也是用Java开发并使用...
真正的海量技术栈,虽然是3个JAVA的大型项目集群课程,但是其中却包含了非常的技术内容,非常的强大,推荐给有JAVA开发基础和工程师们进行学习...├─103、全文检索-ElasticSearch-Docker安装ES.avi ├─104、全文检索
Elasticsearch | 搜索引擎 | [https://github.com/elastic/elasticsearch](https://github.com/elastic/elasticsearch) RabbitMq | 消息队列 | [https://www.rabbitmq.com/](https://www.rabbitmq.com/) Redis | ...
使用springboot集成了elasticsearch,封装了常用api,并使用自定义注解创建mapping,简化开发,开箱即用。注:使用的是elasticsearch 5.x版本
- 全文检索引擎:ElasticSearch - 分布式链路追踪:SkyWalking - 分布式文件系统:Alibaba OSS - 分布式系统网关:Spring Cloud Gateway - 分布式协调系统:Spring Cloud Alibaba Nacos Server - 分布式配置中心:...
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 | 作业调度框架 | ...
包含所因的索引建立、删除、查看,批量创建索引;搜索Query、过滤器 、分组高亮显示;以及创建Mapping
启动解压目录下的bin名称的文件夹,双击elasticsearch.bat文件,就可以启动elasticsearch,启动成功界面如下:启动成功后,会在解压目录下增加2个文件件,data用于数据存储,logs用于日志记录,可以自己创建plugins目录中...
Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 我们建立一个网站或应用程序,并要...
Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 Elasticsearch 不仅仅是 Lucene,
elasticsearch 基于 lucene,隐藏了 lucene 的复杂性,提供了简单易用的 restful api / Java api 接口(另外还有其他语言的 api 接口)。 分布式的文档存储引擎 分布式的搜索引擎和分析引擎 分布式,支持 PB ...
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-parent: jar和插件依赖工程elasticsearch-dao: 数据接口层elasticsearch-redis: 数据缓存层或消息队列层elasticsearch-web: API接口服务层elasticsearch-core: 核心业务层备注: 框架持续更新...
Redis(缓存穿透、缓存击穿、缓存雪崩)、elasticsearch搜索(Java rest高级api)、消息中间件(RabbitMQ发送与接受消息)、阿里云通信、开源单点登陆系统CAS、分布式事务、微信扫码支付(微信支付二维码、支付回调逻辑处理...