java.lang.NoSuchMethodError:org.elasticsearch.action.bulk.BulkRequest.pipeline()Ljava/lang/String; [英] 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屋!