![](/img/trans.png)
[英]ElasticSearch ReIndex Request not working in synchronous manner using Java Rest High Level Client
[英]Reindex selected _source fields using Rest high level client in java
我想使用 Rest 高级客户端重新索引 elasticsearch 中我的文档中的选定字段。
我知道 elasticsearch 查询来实现这一点,但我不知道它是使用 rest 客户端的等效查询。
以下是我尝试使用 rest 客户端实现的 elasticsearch 查询 -
{
"body" : {
"source" : {
"index" : "my source index name",
"_source" : "id, name, rollNo"
},
"dest" : {
"index" : "my destination index name"
}
}
}
要在 java 中使用 rest 客户端编写其等效查询,我使用了以下代码 -
ReindexRequest reindexRequest = new ReindexRequest();
reindexRequest.setSourceIndices("source index name").setDestIndex("destination index name");
reindexRequest.setDocTypes("id", "name", "rollNo", "_doc");
client.reindex(reindexRequest,RequestOptions.DEFAULT);
但是上面的代码没有按预期工作。 它正在重新索引我文档的所有字段。 我只想从每个文档中重新索引选择性的 3 个字段。
您需要使用以下代码,因为setDocTypes
不用于源过滤。
由于没有可用于设置源过滤器的直接方法,因此您需要使用以下代码更改底层搜索请求。
ReindexRequest reindexRequest = new ReindexRequest();
reindexRequest.setSourceIndices("source index name").setDestIndex("destination index name");
reindexRequest.setDocTypes("_doc");
String[] include=new String[] {"id", "name", "rollNo"};
String[] exclude=new String[] {"test"};
reindexRequest.getSearchRequest().source().fetchSource(include, exclude);
client.reindex(reindexRequest,RequestOptions.DEFAULT);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.