【问题标题】:Connect to Secured Elastic Search using java使用 java 连接到 Secured Elastic Search
【发布时间】:2020-02-12 06:19:19
【问题描述】:

我想连接我的安全ElasticSearch 并加载我的索引数据并将其存储在变量中。我在java 中找到了RestHighLevelClient,这有助于我连接弹性搜索。

这是代码:

import org.apache.http.HttpHost;
import org.elasticsearch.client.ElasticsearchClient;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;

public class ESConnect {
public static void main(String[] args){
    RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));
    System.out.println(client); 
}
}

Maven 依赖:

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.5.2</version>
</dependency>

但我的ElasticSearch 受到usernamepassword 的保护。 Httphost 没有 usernamepassword 参数。我找到了这个Secure connection using transport client。但是没有正确的答案来连接安全的ElasticSearch。所以我不知道如何使用 java 连接我的安全弹性搜索。接下来,我在ElasticSearch 中有一个名为football_dataindex。我想加载索引数据并将其存储在使用java 的变量中。帮助我连接到安全的elasticSearch 并使用java 加载索引数据。请为此提供一些解决方案。

【问题讨论】:

    标签: java elasticsearch kibana elastic-stack


    【解决方案1】:

    由弹性搜索 docs 创建。你应该参考他们。现在执行以下操作...

    final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
    credentialsProvider.setCredentials(AuthScope.ANY,
            new UsernamePasswordCredentials("user", "password"));
    
    RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200))
            .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                @Override
                public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                    return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                }
            });
    
    RestHighLevelClient client = new RestHighLevelClient(builder);
    

    现在至于获取数据,您必须使用您想要的查询创建一个 searchRequest(如果数据超过 10000,我认为 Match 查询将使用滚动 api)。关注这个link

    【讨论】:

    • 如果对您有帮助,请批准我的回答作为您问题的答案。
    • 谢谢。但我想从ElasticSearch 的索引中获取数据并将其作为对象加载到变量中。在爪哇。如何制作。
    • 您有存储在索引中的数据架构吗?
    • 是的....我有。在 python,query = {'query': {'bool': {'must': [{'match_all': {}}], 'must_not': [], 'should': []}}, 'size': 10000}; results = client.search(index='index name', body=query) 中,我这样做是为了获取数据。但是在java中,我不知道
    • 我已经用一个链接更新了我的答案,您可以在其中看到如何使用搜索 API。
    猜你喜欢
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多