1

我是新java来的python。我知道有很多答案可以联系ElasticSearchjava。但我很难理解,有些已经过时了。在 python 中,我可以轻松导入elasticsearch模块并连接到它。

这是python中的代码:

from elasticsearch import Elasticsearch
es = Elasticsearch('localhost', port=9200, http_auth=('username', 'password'), scheme="http")

但是在java,我已经包含了elasticsearchMaven 依赖项pom.xml。我想连接到elasticsearch. 我才知道RestHighLevelClient可以做这份工作。我找到了这段代码。但不知道如何使其连接到 Elastic Search。

public RestHighLevelClient createESRestClient() {
    CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
    credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(esUserName, esPassword));

    RestClientBuilder restClientBuilder = RestClient
            .builder(new HttpHost(esRestclientHost, 9200, "http"));
    // Use this one if your ElasticSearch server is setup to use username & password authentication
    if (esAuthentication) {
        restClientBuilder.setHttpClientConfigCallback(h -> h.setDefaultCredentialsProvider(credentialsProvider));
    }

    return new RestHighLevelClient(restClientBuilder);
}

任何人都可以帮助我或向我展示一些使用 java 连接 Elastic Search 的示例代码。在 python 中,它分两行完成。帮我解决java

4

2 回答 2

2

要使用 java 连接 elasticsearch,您可以使用以下代码:

public class ElasticsearchClient {
//private static final Logger log = LoggerFactory.getLogger(ElasticsearchClient.class);
private final RestHighLevelClient client;

public ElasticsearchClient(ElasticsearchConfig elasticsearchConfig) {
    client = new RestHighLevelClient(RestClient.builder(new HttpHost(elasticsearchConfig.getHost(),
            elasticsearchConfig.getPort(), "http")));
}
}

弹性搜索配置:

host: localhost

port: 9200
  • 有关更多信息,您可以查看thisthis

您甚至可以按照本文档中的说明进行操作

您需要将此依赖项添加到pom.xml

<dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-high-level-client</artifactId>
        <version>${es.client.version}</version>
</dependency>

更新 1

代替单独的配置文件,为了在代码本身中添加主机和端口,您可以使用下面提到的代码:

public class ElasticsearchClient {
private static final Logger log = LoggerFactory.getLogger(ElasticsearchClient.class);
private final RestHighLevelClient client;


public ElasticsearchClient(ElasticsearchConfig elasticsearchConfig) {
    client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));
}
于 2020-02-11T13:18:23.073 回答
1

对于当前版本的 Java REST Client 版本 7.5,请按照ElasticSearch Client中的说明进行操作:

RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(
                new HttpHost("localhost", 9200, "http"),
                new HttpHost("localhost", 9201, "http")));

Maven 存储库,ElasticSearch 客户端:

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

所有 API 功能都在客户端网站上指定:搜索、多搜索、索引等。

“Java 低级 REST 客户端”基本身份验证在此处定义:

final CredentialsProvider credentialsProvider =
    new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
    new UsernamePasswordCredentials("user", "password"));

RestClientBuilder builder = RestClient.builder(
    new HttpHost("localhost", 9200))
    .setHttpClientConfigCallback(new HttpClientConfigCallback() {
        @Override
        public HttpAsyncClientBuilder customizeHttpClient(
                HttpAsyncClientBuilder httpClientBuilder) {
            return httpClientBuilder
                .setDefaultCredentialsProvider(credentialsProvider);
        }
    });
于 2020-02-11T13:12:44.823 回答