将 Kibana 查询(创建索引模式)转换为 Python 请求

Convert Kibana query (create index pattern) to Python request

我正在尝试将此 Kibana 查询转换为 Python:

PUT /.kibana/_doc/index-pattern:tempindex
{
  "type": "index-pattern",
  "index-pattern": {
    "title": "tempindex",
    "timeFieldName": "sendTime"
  }
}

这是我目前拥有的:

HEADERS = {
    'Content-Type': 'application/json'
}

uri = "http://localhost:5601/_doc/index-pattern:tempindex"

query = json.dumps({
  "type": "index-pattern",
  "index-pattern": {
    "title": "tempindex",
    "timeFieldName": "sendTime"
  }
})

r = requests.put(uri, headers=HEADERS, data=query).json()
print(r)

但它给了我

{'statusCode': 404, 'error': 'Not Found', 'message': 'Not Found'}

我做错了什么?

P.S:Elastic 和 Kibana 服务器都是本地的 (Windows 10)。

似乎只要改变 uri 就可以了:

uri = "http://localhost:9200/.kibana/_doc/index-pattern:tempindex"

但我不确定 HEADERS,因为正如 lupanoide 指出的那样,kbn-xsrf: true 应该存在,但无论哪种方式它似乎都有效并且显然是结果是一样的(我还没有发现区别)。

编辑:正如 doc 所说:

kbn-xsrf: true

By default, you must use kbn-xsrf for all API calls, except in the following scenarios:

The API endpoint uses the GET or HEAD operations
The path is whitelisted using the server.xsrf.whitelist setting
XSRF protections are disabled using the server.xsrf.disableProtection setting

所以我认为它应该存在。