es--Restful API查询
Restful API查询
- 准备测试数据
- 1、match_all
- 2、match
- 3、bool
- 4、term
- 5、range
- 6、exists
- 7、filter
- 8、浅分页
- 9、深分页
准备测试数据
POST /school/student/_bulk
{ "index": { "_id": 1 }}
{ "name" : "liubei", "age" : 20 , "sex": "boy", "birth": "1996-01-02" , "about": "i like diaocan he girl" }
{ "index": { "_id": 2 }}
{ "name" : "guanyu", "age" : 21 , "sex": "boy", "birth": "1995-01-02" , "about": "i like diaocan" }
{ "index": { "_id": 3 }}
{ "name" : "zhangfei", "age" : 18 , "sex": "boy", "birth": "1998-01-02" , "about": "i like travel" }
{ "index": { "_id": 4 }}
{ "name" : "diaocan", "age" : 20 , "sex": "girl", "birth": "1996-01-02" , "about": "i like travel and sport" }
{ "index": { "_id": 5 }}
{ "name" : "panjinlian", "age" : 25 , "sex": "girl", "birth": "1991-01-02" , "about": "i like travel and wusong" }
{ "index": { "_id": 6 }}
{ "name" : "caocao", "age" : 30 , "sex": "boy", "birth": "1988-01-02" , "about": "i like xiaoqiao" }
{ "index": { "_id": 7 }}
{ "name" : "zhaoyun", "age" : 31 , "sex": "boy", "birth": "1997-01-02" , "about": "i like travel and music" }
{ "index": { "_id": 8 }}
{ "name" : "xiaoqiao", "age" : 18 , "sex": "girl", "birth": "1998-01-02" , "about": "i like caocao" }
{ "index": { "_id": 9 }}
{ "name" : "daqiao", "age" : 20 , "sex": "girl", "birth": "1996-01-02" , "about": "i like travel and history" }
{ "index": { "_id": 10 }}
{ "name" : "luban", "age" : 21 , "sex": "girl", "birth": "1996-01-02" , "about": "i like travel and history" }
{ "index": { "_id": 11 }}
{ "name" : "guiguzi", "age" : 29 , "sex": "girl", "birth": "1996-01-02" , "about": "i like football" }
{ "index": { "_id": 12 }}
{ "name" : "zhuangzhou", "age" : 40 , "sex": "girl", "birth": "1996-01-02" , "about": "i like history" }
- ES中两种查询方式
- GET:指定documentId来查询
- 只能查询这一条documentId的数据
- 类似于Hbase中的get
- GET:指定_search,通过构建查询器Query来做复杂的条件查询
- 类似于Hbase中scan
- GET:指定documentId来查询
1、match_all
- 查询:匹配所有查询
- 默认只显示10条
GET /school/student/_search?pretty
{"query": {"match_all": {}}
}
- 指定条数
GET /school/student/_search?pretty
{"query": {"match_all": {}},"size":12
}
2、match
- 模糊匹配查询:ES中默认的排序规则:按照评分降序排序
GET /school/student/_search?pretty
{"query": {"match": {"about": "travel"}}
}
{"took": 56,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 6,"max_score": 0.8538154, --所有符合条件的数据中最高评分"hits": [{"_index": "school","_type": "student","_id": "4","_score": 0.8538154,"_source": {"name": "diaocan","age": 20,"sex": "girl","birth": "1996-01-02","about": "i like travel and sport"}},{"_index": "school","_type": "student","_id": "7","_score": 0.6931472,"_source": {"name": "zhaoyun","age": 31,"sex": "boy","birth": "1997-01-02","about": "i like travel and music"}},{"_index": "school","_type": "student","_id": "3","_score": 0.6931472,"_source": {"name": "zhangfei","age": 18,"sex": "boy","birth": "1998-01-02","about": "i like travel"}},{"_index": "school","_type": "student","_id": "5","_score": 0.5000329,"_source": {"name": "panjinlian","age": 25,"sex": "girl","birth": "1991-01-02","about": "i like travel and wusong"}},{"_index": "school","_type": "student","_id": "9","_score": 0.5000329,"_source": {"name": "daqiao","age": 20,"sex": "girl","birth": "1996-01-02","about": "i like travel and history"}},{"_index": "school","_type": "student","_id": "10","_score": 0.5000329,"_source": {"name": "luban","age": 21,"sex": "girl","birth": "1996-01-02","about": "i like travel and history"}}]}
}
3、bool
- 多条件查询:条件之间的逻辑关系
- must:必须满足的条件
- must_not:必须不能满足的条件
- should:应该,可有可无,或者
- 测试
- 查询所有喜欢旅游但性别不是男性的
GET /school/student/_search?pretty
{"query": {"bool": {"must": { "match": {"about": "travel"}},"must_not": {"match": {"sex": "boy"}}}}
}
- 查询所有喜欢旅游的,如果有男的也可以
GET /school/student/_search?pretty
{"query": {"bool": {"must": { "match": {"about": "travel"}},"should": {"match": {"sex": "boy"}} }}
}
4、term
- 词条查询【重要】,精准匹配
GET /school/student/_search?pretty
{"query": {"bool": {"must": { "term": {"about": "travel"}},"should": {"term": {"sex": "boy"}} }}
}
- terms:多个词匹配
GET /school/student/_search?pretty
{"query": {"bool": {"must": { "terms": {"about": ["travel","history"]}} }}
}
about": ["travel","history"]:值是或者关系
5、range
- 范围查询
GET /school/student/_search?pretty
{"query": {"range": {"age": {"gt":20,"lte":25}}}
}
- bool多条件嵌套
GET /school/student/_search?pretty
{"query": {"bool": {"must": [{"term": {"about": {"value": "travel"}}},{"range": {"age": {"gte": 20,"lte": 30}}}]}}
}
6、exists
- 判断是否存在
GET /school/student/_search?pretty
{"query": {"exists": {"field": "age" }}
}
7、filter
- 过滤查询
GET /school/student/_search?pretty
{"query": {"bool": {"must": {"match": {"about": "travel"}}, "filter": [{"term":{"age": 20}}]}}
}
8、浅分页
- 类似于limit M,N
- M:从第几条开始,M从0开始计数
- N:显示几条
- 需要给定的条件
- 起始位置:从0开始
- 页面大小
- 分页查询
GET /school/_search?pretty
{"from" : 0 , "size" : 3
}
GET /school/_search?pretty
{"from" : 3 , "size" : 3
}
- 从0开始一直扫描到起始位置,然后显示size的数据
- 每次只返回一页
- 工作中不推荐使用浅分页
- 原理是对每个分片都查询N条,然后再合并根据评分排序取最后的N条
- 如果你的from的位置比较大,性能非常差
- from:10000 size:10
- index
- shard0:from:10000 size:10
- shard1:from:10000 size:10
- shard2:from:10000 size:10
- shard3:from:10000 size:10
- shard4:from:10000 size:10
- |
- 返回50条,根据评分排序,取前10条
9、深分页
- 自动翻页
- 不建议将结果在内存中缓存太长时间
- 初始化:将需要的数据从文件中放到内存中
GET school/_search?scroll=3m
{"query": {"match_all": {}},"size": 3
}
scroll=3m : 将查询的结果在内存中缓存3分钟
- 分页查询:从内存中查询,指定缓存的id
GET /_search/scroll
{"scroll" : "1m","scroll_id" : "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAOOFjE2Z2ZVZ1B1Um9TMjhmeE1WVHI5S1EAAAAAAAADhhZsS2w3bUk0YlJDT3o4eGlJRjlkN3B3AAAAAAAAA48WMTZnZlVnUHVSb1MyOGZ4TVZUcjlLUQAAAAAAAAORFjE2Z2ZVZ1B1Um9TMjhmeE1WVHI5S1EAAAAAAAADkBYxNmdmVWdQdVJvUzI4ZnhNVlRyOUtR"
}
- 不建议处理特别大的数据量,建议通过范围来控制页面的数据,做数据过滤
es--Restful API查询相关推荐
- es java api 查询_es聚合查询javaapi
查询节气详情 package net.apishop.www.controller; import import import import import import import import i ...
- Restful API注解之@PathVariable和@JsonView详解
**对于restful API的使用可以查看我之前的文章SpringMVC开发restful API查询请求 本文将在restful API的基础上介绍@PathVariable和@JsonView注 ...
- java查询所有数据_elasticsearch查询所有数据restful api以及java代码实现
原文:http://blog.java1234.com/blog/articles/366.html restful api实现如下: 返回所有数据: Java代码实现: 运行: ERROR Stat ...
- java多条件组合查询6_elasticsearch组合多条件查询实现restful api以及java代码实现
elasticsearch组合多条件查询实现restful api以及java代码实现 实际开发中,基本都是组合多条件查询. elasticsearch提供bool来实现这种需求: 主要参数: mus ...
- java查询elasticsearch_elasticsearch查询所有数据restful api以及java代码实现
elasticsearch查询所有数据restful api以及java代码实现 restful api实现如下: 返回所有数据: Java代码实现:/** * 查询所有 * @throws Exce ...
- ElasticSearch查询所有数据restful api以及java代码实现
elasticsearch查询所有数据restful api以及java代码实现 restful api实现如下: get http://192.168.1.111:9200/film/dongzuo ...
- java分页显示12345_elasticsearch分页查询数据restful api以及java代码实现
elasticsearch分页查询数据restful api以及java代码实现 restful api实现如下: { "from": 0, "size": 2 ...
- Elasticsearch入常用RESTful API总结
RESTful API HTTP动词介绍 对于资源的具体操作类型,由HTTP动词表示. 常用的HTTP动词有下面五个(括号里是对应的SQL命令). GET(SELECT):从服务器取出资源(一项或多项 ...
- 一文讲解Elasticsearch java restful api 跨版本兼容解决方案
需求来源 之前的文章elasticsearch&kibana从6.0升级到7.9完整过程记录已经已经介绍了该需求的来源,也已经将elasticsearch的server端从6.0.0升级到了7 ...
最新文章
- thttpd+php 不加载php.ini 问题
- HighNewTech:低代码(0代码/无代码,无需代码)开发的简介以及如何选择最合适的低代码开发工具
- liferay-ui:search-container 用法
- 南京师范大学874计算机答案,2017年南京师范大学电气与自动化工程学院874电路考研题库...
- idea怎么将本地文件和远程git对比_IDEA新建本地项目关联远程git仓库
- 基于前端HTML+CSS+JS实现2022城市新年贺卡特效
- T-SQL象数组一样处理字符串、分割字符串
- Python学习路程day9
- 在vue.js中如何导出Excel表格
- sqlite数据库保存聊天记录
- 外贸企业管理系统解决方案丨汇信
- AutoML 是否被过度炒作?
- Win32反汇编(三)深层次的了解各种转移指令:IF语句有符号与无符号跳转
- 【华为】Smart-Link基础知识
- R语言实现SOM(自组织映射)模型(三个函数包+代码)
- 查好友ios1.0总结II:开发节奏的把握
- 程序员怎么应对行业变化?
- 计算机仿真严重拖稿,设计师100种拖稿借口!
- 15-Workbench 载荷与约束
- Shazam 是如何听音辨曲的?