Цель
Я пытаюсь найти пользователей с определенным префиксом.С этой целью у меня есть запрос, аналогичный этому, который работает в Kibana:
POST /_security/_query/user
{
"query": {
"prefix": {
"username": "first."
}
},
"search_after": ["first.last0@gmail.com"],
"size": 1000,
"sort": [
{ "username": { "order": "asc"} }
]
}
Мне не удается понять, как выполнить этот запрос xpack на Java с использованием версии 8.13.4 клиента elasticsearch-java.
Использование клиента .security.getuser
Я пробовал использовать client.security().getUser().get("first.");, но это работает только для точных совпадения.Использование SearchRequest
Я пробовал использовать SearchRequest, но это выдает ElasticsearchException: [es/search] не удалось: [security_Exception] действие [indices:data/read/ поиск] не авторизован для пользователя [zs_svc_acct] с действующими ролями [my_role] в индексах [_security/_query/user], это действие предоставляется привилегиями индекса [прочитать,все]. Роль my_role предоставляет сервисному аккаунту Manage_security, поэтому у него есть необходимые разрешения, но я, скорее всего, настроил его неправильно.// Build the prefix query
PrefixQuery prefixQuery = new PrefixQuery.Builder()
.field("username")
.value("first.")
.build();
// Build the search request
SearchRequest.Builder query = new SearchRequest.Builder()
.index("_security/_query/user")
.query(new Query.Builder().prefix(prefixQuery).build())
.size(1000);
SearchResponse response = client.search(query.build(), User.class);
Из POM:
org.springframework.boot
spring-boot-starter-data-elasticsearch
3.3.5
org.elasticsearch.client
elasticsearch-rest-client
8.13.4
co.elastic.clients
elasticsearch-java
8.13.4
Подробнее здесь: https://stackoverflow.com/questions/792 ... client-req