繁体   English   中英

使用 java 中的 Rest 高级客户端重新索引选定的 _source 字段

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM