elasticsearch 第四篇(API约定)
对多个indices进行操作
es中大多resetapi支持请求多个index, 例如”test1,test2,test3”,index也可以使用通配符, 例如”test*“, 还可以使用+,-来包含或移除某个或某类index, 例如”test*,-test1”
支持设置多个的api的请求字符串可设置以下参数:
- ignore_unavailable: 是否忽略单个index是否可用(不存在或关闭), true表示忽略, false表示不忽略, 默认为false, 例如查询已经关闭的index:
输入: GET /test1/user,account/_search?ignore_unavailable=false
输出:
1 2 3 4 |
{ "error": "IndexClosedException[[test1] closed]", "status": 403 } |
输入: GET /test1/user,account/_search?ignore_unavailable=false
输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "took": 1, "timed_out": false, "_shards": { "total": 0, "successful": 0, "failed": 0 }, "hits": { "total": 0, "max_score": 0, "hits": [] } } |
- allow_no_indices: 是否忽略通配符匹配不到index(不存在或关闭)的情况, true表示允许, false表示不允许,默认为true, 例如查询已经关闭的index:
输入: GET /test*/_search?allow_no_indices=false
输出:
1 2 3 4 |
{ "error": "IndexMissingException[[test*] missing]", "status": 404 } |
输入: GET /test*/_search?allow_no_indices=true
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "took": 1, "timed_out": false, "_shards": { "total": 0, "successful": 0, "failed": 0 }, "hits": { "total": 0, "max_score": 0, "hits": [] } } |
- expand_wildcards: 设置是否扩展通配符到closed的index中,open表示只在匹配并为open的index中查询,closed表示在匹配的所有的index中查询, 默认为closed, 例如查询已经关闭的index
输入:GEt /test*/_search?expand_wildcards=closed
输出:1 2 3 4
{ "error": "IndexClosedException[[test1] closed]", "status": 403 }
公共参数
format: 表示返回数据的格式, 可选值为yaml和json两种, 例如:
输入:GET /test1/user/_search?format=yaml
输出:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
--- took: 23 timed_out: false _shards: total: 5 successful: 5 failed: 0 hits: total: 1 max_score: 1.0 hits: - _index: "test1" _type: "user" _id: "1" _score: 1.0 _source: name: "silence"
pretty: 表示在已json格式返回数据时是否以可视化的格式返回, false或未在设置表示不格式化, 否则格式化
human: 表示是否对返回结果进行格式化处理,比如3600(s)显示1h
查询结果过滤
主要使用filter_path参数进行设置
1.在返回结果中我们只关注took, hits.total, hits.hits._id, hits._source, 则我们可以发起如此请求:
输入:GET /test1/user/_search?filter_path=took,hits.total,hits.hits._id,hits.hits._source
输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "took": 1, "hits": { "total": 1, "hits": [ { "_id": "1", "_source": { "name": "silence" } } ] } } |
2.也可以使用统配符进行设置
输入: GET /_nodes/stats?filter_path=nodes.*.*ost*,nodes.*.os.*u
输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
{ "nodes": { "9jfW4VeWRta-Uq7Cq7bK34": { "host": "silence", "os": { "cpu": { "sys": 1, "user": 1, "idle": 96, "usage": 2, "stolen": 0 } } } } } |
3.若层级较多时可使用**进行简化
输入: GET /_nodes/stats?filter_path=nodes.**.*sys*
输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
{ "nodes": { "9jfW4VeWRta-Uq7Cq7bK34": { "os": { "cpu": { "sys": 2 } }, "process": { "cpu": { "sys_in_millis": 139106 } } } } } |
4.若只需要_source中的某些值,则可以将filter_path和_source参数共同使用
输入: GET /test1/account/_search?filter_path=hits.hits._source&_source=firstname,lastname,gender&size=2
输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
{ "hits": { "hits": [ { "_source": { "firstname": "Rodriquez", "gender": "F", "lastname": "Flores" } }, { "_source": { "firstname": "Opal", "gender": "M", "lastname": "Meadows" } } ] } } |
5.flat_settings用于设置在查询setting时,setting中的key格式, 默认为false:
输入: GET /test1/_settings?flat_settings=true
输出:
1 2 3 4 5 6 7 8 9 10 11 |
{ "test1": { "settings": { "index.creation_date": "1442230557598", "index.uuid": "70bg061IRdKUdDNvgkUBoQ", "index.version.created": "1060099", "index.number_of_replicas": "1", "index.number_of_shards": "5" } } } |
输入: GET /test1/_settings?flat_settings=false
输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "test1": { "settings": { "index": { "creation_date": "1442230557598", "number_of_shards": "5", "uuid": "70bg061IRdKUdDNvgkUBoQ", "version": { "created": "1060099" }, "number_of_replicas": "1" } } } } |
请求参数格式
1.boolean: 在es中将”0”, 0, false, “false”, “off”识别为false,其他均按ture处理
2.number
3.time: 可以提交一个以毫秒时间的整数或者以日期标识结尾的字符串,例如”2d”表示2天,支持的格式有: y(year),M(month),w(week),d(day),h(hour),m(minute),s(second)
4.距离: 可以提交一个以米为单位的证书或者以距离表示结尾的字符串,例如”2km”表示2千米,支持的格式有: mi/miles(mile英里), yd/yards(yard码), ft/feet(feet尺), in/inch(inch英寸), km/kilometers(kilometer千米), m/meters(meter米), cm/centimeters(centimeter厘米), mm/millimeters(millimeter毫米), NM/nmi/nauticalmiles(Nautical mile纳米)
5.模糊类型:
a.数字,时间, IP:类似于range -fuzzines<=value<=+fuzzines
b.字符串: 计算编辑距离返回结果中key的格式为驼峰还是下划线分割, 通过case设置为camelCase则返回驼峰格式,否则为下划线分割形式
- jsonp: 可以用jsonp回调的方式调用es api, 需要通过callback设置回调函数名称,并且需要在elasticsearch.yml中配置
http.jsonp.enable: true
来启用jsonp格式
url访问控制
可以通过代理方式进行es的url访问控制,但是对于multi-search,multi-get和bulk等在请求参数中设置不同的index的情况很难解决.
为防止通过请求体设置index的情况,需要在elasticsearch.yml中设置rest.action.multi.allow_explicit_index:false
, 此时es不允许在request body中设置index
如在修改前:
输入:
1 2 3 4 5 |
POST /test1/user3/_bulk?pretty {"index" : {"_index" : "test2", "_type" : "user1", "_id" : 1}} {"name" : "silence1"} {"index" : {"_index" : "test2", "_type" : "user1", "_id" : 2}} {"name" : "silence2"} |
输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
{ "took": 225, "errors": false, "items": [ { "index": { "_index": "test2", "_type": "user1", "_id": "1", "_version": 1, "status": 201 } }, { "index": { "_index": "test2", "_type": "user1", "_id": "2", "_version": 1, "status": 201 } } ] } |
如在修改后(已重启):
输出:
1 2 3 4 |
{ "error": "IllegalArgumentException[explicit index in bulk is not allowed]", "status": 500 } |
输入:
1 2 3 4 5 |
POST /test1/user3/_bulk?pretty {"index" : {"_id" : 1}} {"name" : "silence1"} {"index" : {"_id" : 2}} {"name" : "silence2"} |
输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
{ "took": 8, "errors": false, "items": [ { "index": { "_index": "test1", "_type": "user3", "_id": "1", "_version": 1, "status": 201 } }, { "index": { "_index": "test1", "_type": "user3", "_id": "2", "_version": 1, "status": 201 } } ] } |
from: http://imsilence.github.io/2015/09/16/elasticsearch/elasticsearch_04/
elasticsearch 第四篇(API约定)相关推荐
- api es7 删除所有数据_Elasticsearch7.1中文文档-第四章-API约定
Elasticsearch REST APIs是用HTTP暴露的,并且是基于JSON的. 除非另有说明,否则本章中的约定都可以使用REST API来使用.多索引 索引名称中支持日期数学 公用选项 基于 ...
- ElasticSearch(四) API 约定
title: ElasticSearch(四) API 约定 tags: ElasticSearch author: Clown95 API 约定 现在我们对Elasticsearch有些了解,现在我 ...
- ElasticSearch查询 第四篇:匹配查询(Match)
<ElasticSearch查询>目录导航: ElasticSearch查询 第一篇:搜索API ElasticSearch查询 第二篇:文档更新 ElasticSearch查询 第三篇: ...
- ElasticSearch入门 第一篇:Windows下安装ElasticSearch
这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- ElasticSearch入门 第二篇:集群配置
这是ElasticSearch 2.4 版本系列的第二篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- 四篇NeurIPS 2019论文,快手特效中的模型压缩了解一下
在即将过去的 2019 年中,快手西雅图实验室在 ICLR.CVPR.AISTATS.ICML 和 NeurIPS 等顶会上发表了十多篇论文. 除了这些研究方面的成果,针对实际业务,西雅图实验室和快手 ...
- 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)
转:https://blog.csdn.net/forezp/article/details/69934399 最新版本: 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix) ...
- 四篇关于恶意软件对抗方面的paper要点
文章目录 第一篇paper 主要成果 主要方法 第二篇paper 主要成果 主要方法 第三篇paper 主要成果 第四篇paper 主要方法 第一篇paper The Limitations of D ...
- mysql第四篇:数据操作之多表查询
mysql第四篇:数据操作之多表查询 一.多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept (did int not null auto_increment P ...
最新文章
- 你所不知道的Python奇技淫巧
- 【数据挖掘】数据挖掘算法 组件化思想 示例分析 ( 组件化思想 | Apriori 算法 | K-means 算法 | ID3 算法 )
- 新地王的诞生终将付出惨痛的代价?
- 计算最大回撤_量化扫盲:什么是最大回撤?
- [BOI2019][第K大问题][暴力剪枝]D2T1 Olympiads
- Visual Studio 2017更新内容记录
- Bootstrap4+MySQL前后端综合实训-Day01-AM【实训安排、HBuilder下载及使用、双飞翼布局(圣杯布局)案例、CSS在线手册、flex布局中的对齐方式】
- SpringMVC中@ResponseBody的相关注意点
- WebRTCon 2018 Day One精彩回顾
- 手动打开和关闭windows的相关服务
- 常用函数总结——sprintf
- updatebyprimarykeyselective返回什么是成功_嫦娥五号发射升空成功!!!
- Oracle内置角色connect与resource的权限
- html怎么在jupyter编辑,jupyter home jupyter环境变量怎么设定
- emmap erlang_erLang学些笔记2—基本类型
- maya mentray_mental ray渲染器下载
- 学习笔记———《最大类间方差法》
- 电脑版微信多开的三种方法
- MySQL高级篇——事务
- 开源软件的法律风险及防控
热门文章
- 【开发工具】学习记录 初学MATLAB
- 【沟通交流】弱关系向强关系的转变
- blockchain 区块链200行代码:在JavaScript实现的一个简单的例子
- 工智能遇上银行反欺诈,到底能帮什么忙
- 机器学习之神经网络模型-下(Neural Networks: Representation)
- key设计 短信验证存redis_Redis存储Key的一种设计实现方式:模式匹配
- 深入理解分布式技术 - 如何确保高可用
- Spring MVC-09循序渐进之文件上传(基于Servlet3.0+内置功能)
- Linux yum 命令
- android camera 检测,检测Android Camera文件夹