使用Java连接Elasticsearch

时间:2020-02-11 13:01:55

标签: java elasticsearch resthighlevelclient

我是fuzzyjoin::regex_left_join( dt2, copy(dt1)[, regex := paste0("[^a-zA-Z]", Keyword, "|^", Keyword)], by = c( Text = "regex"))[, -"regex"] # ID Date Text S.No Keyword # 1: 1 2/11/2020 wrong_B107A0/act 3 B107A0 # 2: 2 2/12/2020 gra/A02SA_fin 6 A02SA # 3: 3 2/13/2020 Acc/DKB105A/acnt 1 DKB105A # 4: 4 2/14/2020 DLB01SA 2 DLB01SA # 5: 5 2/15/2020 KA02SA_attr_to 5 KA02SA # 6: 6 2/16/2020 NA <NA> 的{​​{1}}的新手。我知道有很多答案可以将javapython连接起来。但是我很难理解,有些已经过时了。在python中,我可以轻松导入ElasticSearch模块并连接到它。

这是python中的代码:

java

但是在elasticsearch中,我在from elasticsearch import Elasticsearch es = Elasticsearch('localhost', port=9200, http_auth=('username', 'password'), scheme="http") 中包含了java maven依赖项。我想连接到elasticsearch。我知道pom.xml可以完成这项工作。我找到了这段代码。但是不知道如何使它连接到Elastic Search。

elasticsearch

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

2 个答案:

答案 0 :(得分: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")));
}
}

elasticsearchConfiguration:

host: localhost

port: 9200
  • 有关更多信息,请参见thisthis

您甚至可以按照此documentation

中的说明进行操作

您需要在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")));
}

答案 1 :(得分: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 repository,ElasticSearch客户端:

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

所有API函数均在客户端网站上指定:搜索,多次搜索,索引等。

定义了“ Java低级REST客户端”基本身份验证here

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);
        }
    });