[英]Java Elastic search: getting the last ID of an index
我使用的是 Elastic Search 7.5.1,它是 Java 客户端。 我使用整数作为_id
插入我的索引,我必须手动增加它。 为此,我需要检索插入的最后一个 ID。 我知道如何使用 PostMan 做到这一点:
获取 my_index/_search
{
"size": 1,
"query": {
"match_all": {}
},
"sort": [{
"_id": {
"order": "desc"
}
}
]
}
但我不知道如何使用他们的Java 客户端来做到这一点。 我正在尝试使用下面的代码,但它返回了那些自动生成的 ID 之一。 我的索引只有 3 个 ID 为 1,2 和 3 的项目。
private static String getLastElastticSearchId(String index)
{
RestHighLevelClient client = getElasticSearchClient();
SearchRequest searchRequest = new SearchRequest();
SearchSourceBuilder b = new SearchSourceBuilder();
b.query(QueryBuilders.matchAllQuery());
b.sort(new FieldSortBuilder("_id").order(SortOrder.DESC));
b.from(0);
b.size(1);
searchRequest.source(b);
try {
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
SearchHits hits = searchResponse.getHits();
if(hits.getTotalHits().value > 0){
SearchHit[] searchHits = hits.getHits();
for (SearchHit hit : searchHits) {
return hit.getId();
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
如何更改我的代码以获取最后一个 ID?
谢谢
我刚刚发现出了什么问题。 在实例化请求时,我必须告诉在哪个索引中查找:
SearchRequest searchRequest = new SearchRequest(index);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.