簡體   English   中英

Java 彈性搜索:獲取索引的最后一個 ID

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM