3-Elasticsearch查询API
来源:互联网 发布:窗户打开方式 知乎 编辑:程序博客网 时间:2024/06/06 04:22
在上一节2-Elasticsearch集群数据批量导入中,我们向ES集群中批量导入了1000条数据。这一节通过Java API查询文档。
1、全文查询
查询文档中包含Beijing
关键字的doc,不管该关键字出现在哪个字段中,只要包含都会返回。
public class QueryMain { private static final Logger logger = LogManager.getLogger(QueryMain.class); public static QueryBuilder createQuery() { return QueryBuilders.queryStringQuery("Beijing"); } public static void main(String[] args) { try { ESConfig esConfig = new ESConfig() .setEsClusterName("elasticsearch") .setEsClusterAddress("127.0.0.1:9300") .setEsIndex("person") .setEsType("infos"); // 创建客户端 Client client = new ESClient().getElasticsearchClient(esConfig); // 查询 SearchResponse response = client.prepareSearch().setQuery(createQuery()).execute().actionGet(); // 返回结果 SearchHits hits = response.getHits(); for (SearchHit hit : hits) { System.out.println(hit.getSourceAsString()); } } catch (Exception e) { logger.error("exception:", e); } }}
返回结果:
{"pid":93,"age":28,"sex":true,"name":"Lily","addr":"Beijing"}{"pid":168,"age":16,"sex":false,"name":"Tom","addr":"Beijing"}{"pid":214,"age":35,"sex":false,"name":"Tom","addr":"Beijing"}{"pid":226,"age":77,"sex":true,"name":"Jenny","addr":"Beijing"}{"pid":276,"age":19,"sex":false,"name":"Bill","addr":"Beijing"}{"pid":384,"age":62,"sex":false,"name":"Brown","addr":"Beijing"}{"pid":459,"age":69,"sex":true,"name":"Jenny","addr":"Beijing"}{"pid":531,"age":38,"sex":false,"name":"Brown","addr":"Beijing"}{"pid":536,"age":77,"sex":true,"name":"Lily","addr":"Beijing"}{"pid":574,"age":59,"sex":true,"name":"Lily","addr":"Beijing"}
2、按字段条件查询
如果需要查询(addr = Beijing) && (sex = false) && (10 < age < 20)
的doc:
public static QueryBuilder createQuery() { BoolQueryBuilder query = QueryBuilders.boolQuery(); // addr = Beijing query.must(new QueryStringQueryBuilder("Beijing").field("addr")); // sex = falese query.must(new QueryStringQueryBuilder("false").field("sex")); // age ∈ (10, 20) query.must(new RangeQueryBuilder("age").gt(10).lt(20)); return query; }
返回结果:
{"pid":168,"age":16,"sex":false,"name":"Tom","addr":"Beijing"}{"pid":276,"age":19,"sex":false,"name":"Bill","addr":"Beijing"}{"pid":565,"age":16,"sex":false,"name":"Brown","addr":"Beijing"}{"pid":73,"age":13,"sex":false,"name":"David","addr":"Beijing"}
3、查询API
3.1 基本查询
QueryBuilder query = QueryBuilders.matchPhraseQuery("addr", "Beijing");
只要doc字段中含有Beijing
的短语都会返回。
3.2 多词条查询
QueryBuilder query = QueryBuilders.termsQuery("addr", "Beijing", "Shanghai");
Beijing、Shanghai在addr字段中进行查询,只要满足一个就会返回。但是,并不会返回二者的并集。
3.3 matchAll查询
QueryBuilder query = QueryBuilders.matchAllQuery();
3.4 常用词查询
QueryBuilder query = QueryBuilders.commonTermsQuery("addr", "Beijing");
3.5 multiMatch查询
QueryBuilder query = QueryBuilders.multiMatchQuery("Beijing", "addr", "name");
在addr、name字段中查找关键字为Beijing的doc。
3.6 queryString查询
QueryBuilder query = QueryBuilders.queryStringQuery("Beijing");
3.7 simpleQueryString查询
QueryBuilder query = QueryBuilders.simpleQueryStringQuery("Beijing");
3.8 前缀查询
QueryBuilder query = QueryBuilders.prefixQuery("addr", "Bei");
3.9 模糊查询
QueryBuilder query = QueryBuilders.fuzzyQuery("addr", "BeiJing");
3.10 通配符查询
QueryBuilder query = QueryBuilders.wildcardQuery("addr", "Bei*");
3.11 Range查询
// 闭区间QueryBuilder query = QueryBuilders.rangeQuery("age").from(10).to(20);// 开区间QueryBuilder query = QueryBuilders.rangeQuery("age").gt(10).lt(20);
阅读全文
0 0
- 3-Elasticsearch查询API
- Elasticsearch api查询
- ElasticSearch java API - 聚合查询
- Elasticsearch API聚合查询-笔记
- [ElasticStack系列]elasticsearch查询api
- Elasticsearch java API (3)
- Elasticsearch java API (20)查询 DSL
- ElasticSearch查询 第一篇:搜索API
- Elasticsearch的Java API/查询/分页等
- elasticsearch 常规java api string查询
- Elasticsearch java API (21)查询 DSL 项级别查询
- Elasticsearch java API (21)查询 DSL 复合查询
- Elasticsearch java API (22)查询 DSL Joining查询
- Elasticsearch java API (23)查询 DSL Geo查询
- Elasticsearch java API (24)查询 DSL Specialized(专业)查询
- Elasticsearch java API (25)查询 DSL Span(跨度)查询
- 实时搜索引擎Elasticsearch(3)——查询API的使用
- 实时搜索引擎Elasticsearch(3)——查询API的使用
- 20170703算法学习笔记
- composer安装
- java日期格式化
- 11.5-全栈Java笔记:线程基本信息和优先级别
- webhave爬虫抓取京东数据
- 3-Elasticsearch查询API
- SDL介绍
- Redis缓存运用
- 配色三部曲-你真懂这些色彩术语吗?
- Storm1.1.0<温故而知新-网站用户使用的浏览器统计>
- doc转html在tomcat8下乱码
- python控制流语句if、while、for、break、contnue的学习———ubuntu下python的学习(2)
- 定时关机方法,简单粗暴有疗效
- 关于android studio 2.3 apk打包