elasticsearch8.0+ 创建APIkey

客户端连接ES, 除了 “用户名+密码” 外,Elasticsearch 也提供了 API keys 的访问方式。

使用APIkey, 也可方便的配置其不同的访问权限,用户,过期等。

创建API key的方式:

1.  登录kibana, 在Management -- API Key,点击【Crate API key】

具体参考:API Keys | Kibana Guide [8.11] | Elastic

2 使用 REST APIs 创建

POST /_security/api_key

PUT /_security/api_key

具体参考:API Keys | Kibana Guide [8.11] | Elastic

POST /_security/api_key
{
  "name": "my-restricted-api-key",
  "role_descriptors": {
    "my-restricted-role-descriptor": {
      "indices": [
        {
          "names": ["my-search-app"],
          "privileges": ["read"]
        }
      ],
      "restriction":  {
        "workflows": ["search_application_query"]
      }
    }
  }
}
3 前两种方式创建的APIkey关联的user都是"当前用户", key的权限默认基于“当前用户”;如果需要基于其它用户创建APIkey, 需要使用 REST APIs, kibanaUI上没有提供该功能(即上边那个create的画面,user不能选)

POST /_security/api_key/grant

此 API 类似于2中描述的 API,但它可以为非当前用户创建 API 密钥。

具体参考:Grant API key API | Elasticsearch Guide [8.11] | Elastic

POST /_security/api_key/grant
{
  "grant_type": "password",
  "username" : "readonlyuser",  
  "password" : "123456",  
  "api_key" : {
    "name": "dev-read-only-api-key"
  }
}


response:
{
  "id": "1lXXXXXXXXXXXXXXXXXX",
  "name": "dev-read-only-api-key",
  "api_key": "7XXXXXXXXXXXXXXXXXXXX",
  "encoded": "MXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXw=="
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
我理解你的问题是关于 Elasticsearch 8.0 Java API 中的 SearchResponse 类的使用。 SearchResponse 类是 Elasticsearch Java API 中的一个重要类,用于存储搜索请求的响应结果。可以通过该类获取搜索结果的各项信息,例如搜索结果的总数、搜索响应的状态信息以及搜索结果中的每个文档的具体信息。 在 Elasticsearch 8.0 中,可以通过以下方式创建 SearchResponse 对象: ``` SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT); ``` 其中,searchRequest 是一个 SearchRequest 对象,用于定义搜索请求的具体参数,例如搜索的索引、搜索的查询语句等等。client 是 Elasticsearch 的客户端对象,通过该客户端对象可以执行各种 Elasticsearch 操作,包括搜索操作。 一旦执行搜索请求,就可以得到一个 SearchResponse 对象,可以通过该对象获取搜索结果的各项信息,例如搜索结果的总数: ``` long totalHits = response.getHits().getTotalHits().value; ``` 以上代码中,getHits() 方法返回一个 SearchHits 对象,该对象包含了所有搜索结果的详细信息。getTotalHits() 方法可以获取搜索结果的总数。value 属性可以获取具体的搜索结果总数值。 除了获取搜索结果的总数,还可以通过 SearchResponse 对象获取各个搜索结果的详细信息,例如搜索结果中第一个文档的具体信息: ``` SearchHit hit = response.getHits().getAt(0); String id = hit.getId(); String sourceAsString = hit.getSourceAsString(); ``` 以上代码中,getAt() 方法通过索引获取搜索结果中的具体文档信息。getId() 方法可以获取该文档的 ID 值,getSourceAsString() 方法可以获取该文档的具体内容。 以上是 Elasticsearch 8.0 Java API 中 SearchResponse 类的基本使用方法,希望可以帮助到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值