elastic java delete_Elasticsearch 2.0:如何在Java中通过查询删除

我正在尝试升级到ES 2.0。我下载了ES 2.0,并将其安装在Windows计算机上。

在我的pom.xml中,我具有以下内容:

org.elasticsearch

elasticsearch

2.0.0-rc1

org.elasticsearch.plugin

delete-by-query

2.0.0-rc1

在我的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服务器中安装按查询删除插件吗?

感谢您的指导!

更新

我遵循了Max的建议,这就是我现在所拥有的:

首先,在创建客户端时,使设置如下所示:

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相关的部分就可以正常工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值