cur*_*us1 7 elasticsearch elasticsearch-2.0
我正在尝试升级到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>
Run Code Online (Sandbox Code Playgroud)
在我的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();
Run Code Online (Sandbox Code Playgroud)
我希望能取代这个:
DeleteByQueryResponse response = client.prepareDeleteByQuery("myindex")
.setTypes("mydocytype")
.setSource(b.toString())
.execute()
.actionGet();
Run Code Online (Sandbox Code Playgroud)
用ES 2.0方式.谷歌搜索但没有找到它的例子.在线API文档对我来说太抽象了.我该怎么做?
另一个问题:我是否必须在Elasticsearch服务器中安装delete-by-query插件?
谢谢你的指针!
UPDATE
我遵循马克斯的建议,这就是我现在所拥有的:
首先,在创建客户端时,使设置如下所示:
Settings settings = Settings.settingsBuilder()
.put("cluster.name", "mycluster")
.put("plugin.types", DeleteByQueryPlugin.class.getName())
.build();
Run Code Online (Sandbox Code Playgroud)
其次,在按查询删除的地方:
DeleteByQueryResponse rsp = new DeleteByQueryRequestBuilder(client, DeleteByQueryAction.INSTANCE)
.setIndices("myindex")
.setTypes("mydoctype")
.setSource(b.toString())
.execute()
.actionGet();
Run Code Online (Sandbox Code Playgroud)
我还通过在ES的根目录中运行以下命令来安装delete by query插件:
bin\plugin install delete-by-query
Run Code Online (Sandbox Code Playgroud)
如果我不安装此插件,我会收到错误.
完成所有这些步骤后,ES相关部分工作正常.
Ümi*_*mit 12
plugin.types已在ES 2.1.0(源)中弃用.因此,接受的解决方案将导致a NullPointerException.
解决方案是使用以下addPlugin方法:
Client client = TransportClient.builder().settings(settings())
.addPlugin(DeleteByQueryPlugin.class)
.build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host",9300));
Run Code Online (Sandbox Code Playgroud)
Max*_*Max 11
我相信你可以用这个:
DeleteByQueryResponse rsp = new DeleteByQueryRequestBuilder(client, DeleteByQueryAction.INSTANCE)
.setTypes("mydocytype")
.setSource(b.toString())
.execute()
.actionGet();
Run Code Online (Sandbox Code Playgroud)
您必须在设置中添加插件类型:
Settings settings = Settings.settingsBuilder()
.put("plugin.types", DeleteByQueryPlugin.class.getName())
Run Code Online (Sandbox Code Playgroud)
如果您有远程服务器,则必须安装插件.
从弹性5开始......
final BulkIndexByScrollResponse response = DeleteByQueryAction.INSTANCE.newRequestBuilder(super.transportClient)
.filter(
QueryBuilders.boolQuery()
.must(QueryBuilders.termQuery("_type", "MY_TYPE")) // Trick to define and ensure the type.
.must(QueryBuilders.termQuery("...", "...")))
.source("MY_INDEX")
.get();
return response.getDeleted() > 0;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8806 次 |
| 最近记录: |