私はES 2.0にアップグレードしようとしています。私はES 2.0を落としてWindowsマシンにインストールしました。私のpom.xmlでElasticsearch 2.0:Javaのクエリで削除する方法
、私は次のようしている:私のJavaコードで
<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>
、使用しているとき、私は次のようにクエリによって削除でした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ドキュメントは抽象的すぎるようです。どうしたらいいですか?
もう1つの質問:Elasticsearchサーバーにクエリ別削除プラグインをインストールする必要がありますか?
ポインタありがとうございます!
UPDATE
私はマックスの提案に続いて、ここで私が今持っているものです。
の設定は以下のように見えるよう、クライアントを作成するまず、:
Settings settings = Settings.settingsBuilder()
.put("cluster.name", "mycluster")
.put("plugin.types", DeleteByQueryPlugin.class.getName())
.build();
セカンドを、クエリによる削除を行っている場所:
DeleteByQueryResponse rsp = new DeleteByQueryRequestBuilder(client, DeleteByQueryAction.INSTANCE)
.setIndices("myindex")
.setTypes("mydoctype")
.setSource(b.toString())
.execute()
.actionGet();
私もインストールはESのルートディレクトリに以下を実行して、クエリプラグインによって削除:
bin\plugin install delete-by-query
私はこのプラグインをインストールしない場合、私はエラーを取得します。
これらの手順をすべて実行した後、ES関連のパーツは正常に動作します。
こんにちはマックス、私を助けてくれてありがとう! 「ローカルノードを使用する」とはどういう意味ですか?私はノートの上にすべてを持っています。 Java Webアプリケーションはポート8080で実行され、ESはポート9300で実行されます。手動で2つずつ起動する必要があります。別のもの:設定ステートメントに間違いがあります。私は自分のコードを更新し、常にNULLポインターエラーを持っています。 – curious1
こんにちは、ローカルノードで、私は埋め込みESノード(https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/node-client.html)を使用することを意味しました。これを使うと、別のelasticsearchクライアントを起動する必要はありません。 あなたはトランスポータクライアント(https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html)を使ってelasticsearchノードに接続していると思います。 どこで正確にnullポインタが得られますか? – Max
私はあなたがplugin.typesを入れなければならない組み込みノードを使用していない場合でも参照してください。私はこれについて私のコメントを編集しています。 – Max