我想使用 Rest High 級別的客戶端在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 個欄位。
uj5u.com熱心網友回復:
您需要使用以下代碼,因為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);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/504072.html
標籤:爪哇 弹性搜索 查询生成器 重新索引 elasticsearch-high-level-restclient
