java.lang.NoSuchMethodError:org.elasticsearch.action.bulk.BulkRequest.pipeline()Ljava/lang/String; [英] java.lang.NoSuchMethodError: org.elasticsearch.action.bulk.BulkRequest.pipeline()Ljava/lang/String;

查看:135
本文介绍了java.lang.NoSuchMethodError:org.elasticsearch.action.bulk.BulkRequest.pipeline()Ljava/lang/String;的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Java的High Rest客户端.针对ES v6.6.1的特定版本为6.6.1

I'm using the High Level Rest client from java. Specific version is 6.6.1 against an ES v6.6.1

当我尝试执行全部都是IndexRequests的BulkRequest时,出现以下错误

I'm getting the following error when I try to do a BulkRequest which are all IndexRequests

java.lang.NoSuchMethodError:org.elasticsearch.action.bulk.BulkRequest.pipeline()Ljava/lang/String;

java.lang.NoSuchMethodError: org.elasticsearch.action.bulk.BulkRequest.pipeline()Ljava/lang/String;

很高兴提出问题,但想知道是否有人知道这是怎么回事.

Happy to file an issue, but was wondering if someone might know what's up in case it's a non issue.

下面是我正在使用的代码.如果有人知道该错误是什么,将不胜感激.

Below is the code I'm using. Would appreciate if anyone knows what this error is.

我肯定在使用lib 6.6.1

I'm definitely using lib 6.6.1

compile 'org.elasticsearch.client:elasticsearch-rest-high-level-client:6.6.1'

谢谢

BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "changeme"));

RestClientBuilder builder = RestClient.builder(new HttpHost("asus.local", 9200))
    .setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider));
RestHighLevelClient client = new RestHighLevelClient(builder);
BulkRequest request = new BulkRequest();

String line;
while ((line = reader.readLine()) != null) {
  String[] split = line.split(",");
  Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(split[0]);
  Map< String, Object> jsonMap = new HashMap< String, Object>();
  jsonMap.put("valuedate", date);
  jsonMap.put("value", Double.valueOf(split[1]));
  IndexRequest indexRequest = new IndexRequest("my_index", "doc", String.valueOf(row))
      .source(jsonMap);
  request.add(indexRequest);
}

System.out.println("starting bulk call");
BulkResponse bulkResponse = client.bulk(request, RequestOptions.DEFAULT);
System.out.println("DONE");

推荐答案

The

public String pipeline() {
    return globalPipeline;
}

方法已添加到 Elasticsearch Server 模块(

method has been added on version 6.6 of the Elasticsearch Server module (GitHub file - 6.6 branch).

确保所有 Elastic Search 模块共享相同的版本.
当您编写 Rest Client 6.6.1 时,我怀疑 Server 的版本早于(< 6.6 ).

Be sure all the Elastic Search modules share the same version.
As you wrote the Rest Client is 6.6.1, I suspect the Server one is older than that (< 6.6).

您需要

<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>6.6.1</version>
</dependency>

或者为Gradle

implementation 'org.elasticsearch:elasticsearch:6.6.1'

这篇关于java.lang.NoSuchMethodError:org.elasticsearch.action.bulk.BulkRequest.pipeline()Ljava/lang/String;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆