【发布时间】:2019-07-22 19:32:42
【问题描述】:
我正在使用来自 java 的 High Level Rest 客户端。针对 ES v6.6.1 的特定版本是 6.6.1
当我尝试执行全部是 IndexRequests 的 BulkRequest 时出现以下错误
java.lang.NoSuchMethodError: org.elasticsearch.action.bulk.BulkRequest.pipeline()Ljava/lang/String;
很高兴提出问题,但想知道如果不是问题,是否有人知道发生了什么。
下面是我正在使用的代码。如果有人知道这个错误是什么,将不胜感激。
我肯定在使用 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");
【问题讨论】:
-
看起来用于编译/构建项目和运行项目的 elasticsearch 版本存在差异
-
我认为可能是这样,所以我在发布之前下载了 ES 6.6.1。我在 ES 6.6.1 上使用 defo,这是我的 gradle 依赖项:compile 'org.elasticsearch.client:elasticsearch-rest-high-level-client:6.6.1'
-
@JavaGuy 看看我的回答。您需要升级核心库。
标签: java elasticsearch