首页 > 其他分享 >Elasticsearch专题精讲——API规范—— 基于 URL 的访问控制

Elasticsearch专题精讲——API规范—— 基于 URL 的访问控制

时间:2023-05-30 16:55:05浏览次数:55  
标签:multi 请求 URL 精讲 索引 API query 访问控制

API规范—— 基于 URL 的访问控制

https://www.elastic.co/guide/en/elasticsearch/reference/8.8/api-conventions.html#api-url-access-control

  Elasticsearch 中的 multi-search(多搜索)、multi-get(多获取) 和 bulk(批量请求)是在一个请求中执行多个操作的方法。如果使用基于URL的访问控制代理来保护数据访问,那么 multi-search(多搜索)、multi-get(多获取) 和 bulk(批量请求)中,需要在URL和请求体中指定数据流或索引,才能保证请求被正确执行并访问到所需的数据。

  例如,如果客户端想要一次请求获取多个索引的数据,那么就需要在URL中指定要获取数据的索引名称,同时还需要在每个请求的请求体中指明请求的具体操作及操作对应的索引名称。因此,对于数据非常庞大且涉及多个索引的情况,执行基于URL的访问控制就会变得非常困难。

  我们举个例子:

  假设客户端想要一次请求获取三个索引(index1、index2和index3)中所有文档的数据。根据基于URL的访问控制的实现方式,客户端需要向服务器发送三个请求,每个请求都需要指定索引名称,并在请求体中指定搜索操作:

GET /index1/_search
{
"query": { "match_all": {} }
}

GET /index2/_search
{
"query": { "match_all": {} }
}

GET /index3/_search
{
"query": { "match_all": {} }
}

  这种实现方式很容易导致重复的请求,因为每个请求都需要指定索引名称。此外,这样的做法还需要客户端发送多个请求,导致服务器负载较大。

  为了减轻这种情况下的负担,建议通过使用单个索引名称,并使用多查询语句(multi-query)来执行基于URL的访问控制。这意味着客户端可以在单个请求中指定一个或多个查询,并指定与查询关联的索引名称。例如:

POST /_msearch
{}
{"index": "index1"}
{"query": {"match_all": {}}}
{}
{"index": "index2"}
{"query": {"match_all": {}}}
{}
{"index": "index3"}
{"query": {"match_all": {}}}

 

  为了克服这种困难,用户可以使用其他方法,例如快速启动和关闭数据流或每个请求使用单个索引名称来提高数据访问的效率并简化基于URL的访问控制。

  此外,还可以考虑优化数据流。如果客户端只需要一部分结果,就可以使用分片(shard)和滚动(scrolling)来减小数据量,并且仅获取必要的数据。可以使用滚动作为一种优化策略,来提升基于URL的访问控制的效率。

  要防止用户重写 URL 中指定的数据流或索引,请在 elasticsearch.yml 中将 rest.action.multi.allow_display_index 设置为 false:

rest.action.multi.allow_display_index: false

  需要注意的是,该选项的默认值是 true,这意味着用户可以在 URL 中自定义显示的索引。如果你将其设置为 false,则 Elasticsearch 在 URL 中忽略显示的索引,并将只考虑实际请求中指定的索引,从而确保安全性。

标签:multi,请求,URL,精讲,索引,API,query,访问控制
From: https://www.cnblogs.com/zuoyang/p/17443726.html

相关文章

  • 在浏览器地址栏键入URL,按下回车之后经历的流程
    在浏览器地址栏键入URL,按下回车之后会经历以下流程:1、浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址;2、解析出IP地址后,根据该IP地址和默认端口 80,和服务器建立TCP连接;3、浏览器发出读取文件(URL中域名后面部分对应的文件)的HTTP请求,该请求消息作为TCP......
  • 1688API商品详情页数据,接口封装
    首先,大家要到官方主页去申请一个 appkey,这个是做什么用的呢?AppKey是应用的唯一标识,TOP通过AppKey来鉴别应用的身份。AppSecret是TOP给应用分配的密钥,开发者需要妥善保存这个密钥,这个密钥用来保证应用来源的的可靠性,防止被伪造。就是说嘛,想要进门可要先有钥匙啊,所以,appke......
  • 加密api研究
    实验一-密码引擎-加密API研究0、查找各种标准的原始文档,研究学习(至少包含CryptoAPI,PKCS#11,GMT0016-2012,GMT0018-2012)(1)CryptoAPI:作为一部分MicrosoftWindows提供的应用程序编程接口(API),CryptoAPI提供了一组函数。这些函数允许应用程序在对用户的敏感私钥数据提供......
  • 飞书机器人与飞书后台API的一些操作记录
    在飞书群组里面选择“设置”——“群机器人”——“添加机器人”——“自定义机器人”webhook地址,俗称网络勾子,可以通过该地址给这个群组通过一个叫“自定义机器人”(名字在创建机器人时可以修改)的发言。自定义关键词,发送的消息必须包含关键词才会被发送。IP白名单,可以设置ip......
  • 服务之:urlacl解决服务HttpListener监听url需要管理员
    在使用HttpListener监听url时,如果没有以管理员身份运行可能会抛出异常,无法监听,遇到这个问题时,可以先使用管理员权限的程序将Url注册到urlacl列表,解决普通权限无法开启监听问题第一步: Netshhttpshowurlacl。查看有没有需要监听的url 第二步:添加Url到Urlacl:例如添加  "......
  • OpenAI API 代理
    由于OpenAI及GFW的双重限制,国内用户无法访问OpenAI的API,现提供代理服务地址供开发者免费使用。✅代理地址:https://api.openai-proxy.com,支持OpenAI官方所有接口。本服务只做代理中转,不会保存任何数据!......
  • Elasticsearch专题精讲——API规范—— 一般表达式
    API规范——一般表达式1、格式化搜索结果 当任何请求URL加pretty=true参数时,返回的JSON都是格式化的(仅用于调试)。另一个选项是设置format=yaml,结果以更可读的yaml格式返回。2、可读输出 统计数据以适合人(例如"exists_time":"1h"或"size":"1KB")和计算机(例如......
  • npm install ERR_INVALID_URL错误
    我在terminal中设置了proxy后,开启proxyon后,执行npminstall包错误: 把proxyoff后,错误又没有了,不知道是啥问题。下面的文章可能有作用:https://weekendprojects.dev/posts/how-to-fix-npm-err_invalid_url/#:~:text=The%20%E2%80%9CNPM%20ERR_INVALID_URL%E2%80%9D%20error%20occ......
  • VUE+FastAPI结合高德地图API做一个旅游推荐系统
    最近一个月没有更新博客,去写了一个系统,包含前台和后台,还有后端的API。前后台使用VUE+高德地图API,后台使用FastAPI,实现了一些基本的功能。前台部分因为我也是前端初学者,写的比较乱基础功能用户登陆注册功能搜索功能主页照片墙跳转对应详情页打卡功能评论功能(没接......
  • 【掌握接口开发技巧 打造可靠的API接口】按关键字搜索商品
    作为一名程序员,在开发过程中经常需要开发API接口来实现数据的传输和交互等功能。本文将介绍程序员如何开发API接口,并提供一些实用的技巧。第一步:设计接口文档在开发API之前,我们需要先设计接口文档。接口文档包括接口名称,参数名称和类型,返回值格式等信息。接口文档可以帮助我们更好......