ES 2.0 にアップグレードしようとしています。ES 2.0 をダウンロードして、Windows マシンにインストールしました。
私のpom.xmlには、次のものがあります。
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.0.0-rc1</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>delete-by-query</artifactId>
<version>2.0.0-rc1</version>
</dependency>
私の Java コードでは、ES 1.7.3 を使用しているときに、次の方法でクエリによって削除しました。
StringBuilder b = new StringBuilder("");
b.append("{");
b.append(" \"query\": {");
b.append(" \"term\": {");
b.append(" \"category\": " + category_value );
b.append(" }");
b.append(" }");
b.append("}");
client = getClient();
DeleteByQueryResponse response = client.prepareDeleteByQuery("myindex")
.setTypes("mydocytype")
.setSource(b.toString())
.execute()
.actionGet();
これを置き換えることを望んでいます:
DeleteByQueryResponse response = client.prepareDeleteByQuery("myindex")
.setTypes("mydocytype")
.setSource(b.toString())
.execute()
.actionGet();
ES 2.0の方法で。グーグルで検索しましたが、その例が見つかりませんでした。オンラインの API ドキュメントは抽象的すぎるように思えます。どうすればいいですか?
別の質問: Elasticsearch サーバーに delete-by-query プラグインをインストールする必要がありますか?
ポインタをありがとう!
アップデート
私はマックスの提案に従いました。これが私が今持っているものです:
まず、クライアントを作成するときに、設定を次のようにします。
Settings settings = Settings.settingsBuilder()
.put("cluster.name", "mycluster")
.put("plugin.types", DeleteByQueryPlugin.class.getName())
.build();
次に、delete-by-query を実行する場所で:
DeleteByQueryResponse rsp = new DeleteByQueryRequestBuilder(client, DeleteByQueryAction.INSTANCE)
.setIndices("myindex")
.setTypes("mydoctype")
.setSource(b.toString())
.execute()
.actionGet();
また、ES のルート ディレクトリで次のコマンドを実行して、delete by query プラグインをインストールしました。
bin\plugin install delete-by-query
このプラグインをインストールしないと、エラーが発生します。
これらのすべての手順の後、ES 関連のパーツは問題なく動作します。