Elasticsearch 客户端:索引名称中包含 * 时无法获取数据

问题描述 投票:0回答:1

我在 python 中编写了以下代码来从我的 Elastic 部署中获取数据:

from elasticsearch import Elasticsearch
client = Elasticsearch(<endpoint>,api_key=(<API key ID>,<secret>))
client.get(index="abc-001",id = '--index001')

此代码工作正常,并为我提供了 objectAPI 响应。

但是对代码进行一些小的更改:

client.get(index="abc-*",id = '--index001')

给我一个错误:

AuthorizationException: AuthorizationException(403, 'security_exception', 'action [indices:data/read/get] is unauthorized for API key id [<id>] of user [<user>], this action is granted by the index privileges [read,all]')

我在使用时遇到同样的问题

client.exists(index,id)

我需要假设我不知道完整的索引名称,并且需要知道部署中是否存在索引“abc-*”。即使以某种方式,如果我们可以忽略 id 并只知道索引是否存在,那也会很有帮助。

python elasticsearch elastic-stack
1个回答
0
投票

问题

正如错误所述,您没有访问

indexName*
所需的权限。可能您的特权仅限于单个索引名称(例如 abc-001、abc-002 等),而不是
abc-*

所以请检查您的角色权限,看看您是否有这样的访问权限。 有两种方法可以做到这一点:

  1. 使用 Kibana 管理仪表板,角色部分
  2. 使用以下查询:
GET _security/role/<your-role-name>

如果您没有获得批准,请提出要求,因为没有其他方法可以 解决问题!

解决方案

您需要获得这样的访问权限,为此您可以使用 Kibana 仪表板(更简单的方式)或查询方法。 (在这里您可以找到如何操作)

© www.soinside.com 2019 - 2024. All rights reserved.