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字段的值。
本文地址:http://blog.csdn.net/laigood12345/article/details/7606011
分享到:
相关推荐
分布式搜索elasticsearch java API 之(五)--- 搜索 8 分布式搜索elasticsearch java API 之(六)--- 批量添加删除索引 9 分布式搜索elasticsearch java API 之(七)--- 与MongoDB同步数据 10 分布式搜索elastic...
ElasticSearch是个开源的分布式的搜索引擎,它可以近乎实时的存储、检索数据;... ElasticSearch提供javaAPI,使用者可以通过javaAPI调用,但是7.0以后不会提供普通javaAPI,需要使用高级APIrest-high-level调用。
好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个开源的高拓展的分布式全文搜索引擎它可以近乎实时的存储、检索数据;本身拓展性很好,可以拓展到上百台服务器,处理PB级别的数据。es也是用Java开发并使用...
Elasticsearch是一个基于Java编写的高性能搜索引擎,使用了分布式架构,可以处理海量的数据,并提供实时搜索和分析能力。Elasticsearch的数据存储和搜索能力非常强大,支持文本、数字、地理位置等多种类型的数据,并...
使用springboot集成了elasticsearch,封装了常用api,并使用自定义注解创建mapping,简化开发,开箱即用。注:使用的是elasticsearch 5.x版本
包含所因的索引建立、删除、查看,批量创建索引;搜索Query、过滤器 、分组高亮显示;以及创建Mapping
Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 我们建立一个网站或应用程序,并要...
启动解压目录下的bin名称的文件夹,双击elasticsearch.bat文件,就可以启动elasticsearch,启动成功界面如下:启动成功后,会在解压目录下增加2个文件件,data用于数据存储,logs用于日志记录,可以自己创建plugins目录中...
真正的海量技术栈,虽然是3个JAVA的大型项目集群课程,但是其中却包含了非常的技术内容,非常的强大,推荐给有JAVA开发基础和工程师们进行学习...├─103、全文检索-ElasticSearch-Docker安装ES.avi ├─104、全文检索
- 全文检索引擎:ElasticSearch - 分布式链路追踪:SkyWalking - 分布式文件系统:Alibaba OSS - 分布式系统网关:Spring Cloud Gateway - 分布式协调系统:Spring Cloud Alibaba Nacos Server - 分布式配置中心:...
Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 Elasticsearch 不仅仅是 Lucene,
elasticsearch 基于 lucene,隐藏了 lucene 的复杂性,提供了简单易用的 restful api / Java api 接口(另外还有其他语言的 api 接口)。 分布式的文档存储引擎 分布式的搜索引擎和分析引擎 分布式,支持 PB ...
2Elasticsearch 是基于 Apache Lucene 的开发的分布式的、开源的搜索分析引擎,支持各种数据类型,包括文本、数字、地理、结构化、非结构化。 Elasticsearch 因其简单的 REST API、分布式特性、高性能、可扩展而闻名...
s这门技术有点特殊,跟比如其他的像纯java的课程,比如分布式课程,或者大数据类的课程,比如hadoop,spark,storm等。不太一样 2、es非常重要的一个api,是它的restful api,你自己思考一下,掌握这个es的restful ...
Redis(缓存穿透、缓存击穿、缓存雪崩)、elasticsearch搜索(Java rest高级api)、消息中间件(RabbitMQ发送与接受消息)、阿里云通信、开源单点登陆系统CAS、分布式事务、微信扫码支付(微信支付二维码、支付回调逻辑处理...
类似谷歌、百度这种大数据全文搜索引擎的场景都可以使用ElasticSearch作为底层支持框架,可见ElasticSearch提供的搜索能力确实强大,世面上很多时候我们简称ElasticSearch为es。Logstash是ELK的中央数据流引擎,用于...
讲座:Elasticsearch 完整指南 重要更新:由于版本 7 类型将被删除,默认类型应替换为_doc类型 第 1 部分 - 入门 第 2 课 - Elasticsearch 介绍 Elasticsearch 是一个分析和全文搜索引擎。 它在应用程序中启用搜索...
项目框架elasticsearch-parent: jar和插件依赖工程elasticsearch-dao: 数据接口层elasticsearch-redis: 数据缓存层或消息队列层elasticsearch-web: API接口服务层elasticsearch-core: 核心业务层备注: 框架持续更新...