如何在 spring 数据 elasticsearch 中添加 run-as header

How can I add the run-as header in spring data elasticsearch

我在 Google 上搜索了一段时间,但似乎无法通过 ElasticsearchTemplate/Operations object 添加 header。我找不到任何方法来设置 es-security-runas-user header。否则,我无法使用我的 REST 服务代表用户执行请求。有谁知道 Spring Data Elasticsearch 现在是否可以做到这一点?如果没有,我要重写很多代码...

您没有指定您使用的 Spring Data Elasticsearch 的哪个版本。

在当前版本 3.2 中,您可以使用以下配置 bean:

@Configuration
public class RestClientConfig extends AbstractElasticsearchConfiguration {

    @Override
    @Bean
    public RestHighLevelClient elasticsearchClient() {

        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.add("es-security-runas-user", "some-user");
        final ClientConfiguration clientConfiguration = ClientConfiguration.builder() //
                .connectedTo("localhost:9200") //
                .withDefaultHeaders(httpHeaders) //
                .build();

        return RestClients.create(clientConfiguration).rest();
    }
}

不可能在个别操作上发送 headers。