java プログラムからElasticsearcのREST API を呼び出すために、
公式サイトの説明のとおり、pom.xml に以下の記述を追加しました。
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.3.1</version>
</dependency>
ビルドは成功、実行すると以下の例外が発生しました。
java.lang.NoSuchMethodError: org.elasticsearch.action.search.MultiSearchResponse.fromXContext(Lorg/elasticsearch/common/xcontent/XContentParser;)Lorg/elasticsearch/action/search/MultiSearchResponse;
at java.lang.invoke.MethodHandleNatives.resolve(Native Method)
at java.lang.invoke.MemberName$Factory.resolve(MemberName.java:965)
at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:990)
at java.lang.invoke.MethodHandles$Lookup.resolveOrFail(MethodHandles.java:1387)
at java.lang.invoke.MethodHandles$Lookup.linkMethodHandleConstant(MethodHandles.java:1739)
at java.lang.invoke.MethodHandleNatives.linkMethodHandleConstant(MethodHandleNatives.java:442)
at org.elasticsearch.client.RestHighLevelClient.multiSearch(RestHighLevelClient.java:423)
調べたところ elasticsearch-rest-high-level-client-6.3.1.jar の依存ファイルとして elasticsearch-5.6.8.jar がダウンロードされていることが原因でした。
pom.xml に、明示的に以下の dependency を追加することで解決しました。
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.3.1</version>
</dependency>