elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

Java弹性搜索:获取索引的最后一个ID

Java弹性搜索:获取索引的最后一个ID,java,elasticsearch,Java,elasticsearch,我使用的是弹性搜索7.5.1,它是Java客户端。我使用int作为\u id插入索引,我必须手动递增它。为此,我需要检索最后插入的ID。我知道如何使用邮递员: 获取我的索引/\u搜索 { "size": 1, "query": { "match_all": {} }, "sort": [{ "_id": { "order": "desc" } } ] } 但我不知道如何使用他们的。我正在尝试下面的代码,但它返回了一个自

我使用的是弹性搜索7.5.1,它是Java客户端。我使用int作为
\u id
插入索引,我必须手动递增它。为此,我需要检索最后插入的ID。我知道如何使用邮递员:

获取我的索引/\u搜索

{
  "size": 1, 
  "query": {
    "match_all": {}
  },
 "sort": [{
      "_id": {
        "order": "desc"
      }
    }
  ]
}
但我不知道如何使用他们的。我正在尝试下面的代码,但它返回了一个自动生成的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);

我刚刚发现了问题所在。在实例化请求时,我必须告诉您要在哪个索引中查找:

SearchRequest searchRequest = new SearchRequest(index);