ES--ids查詢


參考Elasticsearch Reference [7.10] » Query DSL » Term-level queries » IDs

一、ID 查詢

  ES每一行數據,即文檔都會有一個id,如果指定某一列field值作為id,則該列field必須為唯一鍵,類似於MySQL的UK;不過不指定,ES會自動生成,常常為了更好的定位數據,會指定一列滿足UK的field作為文檔的id,接下來我們說一下根據id查詢。
類似MySQL的 where id=?

1.1、命令行

GET /sms-logs-index/_doc/1
 

1.2、java 代碼

    @Test
    public void idQuery() throws IOException {
        GetRequest request = new GetRequest(index);

        GetResponse resp = client.get(request.id("1"), RequestOptions.DEFAULT);

        System.out.println(resp);
    }

二、IDs查詢

根據多個id查詢,類似MySQL中的where id in(id1,id2,id3)

2.1、命令行

POST /sms-logs-index/_search?pretty
{
  "query": {
    "ids": {
      "values": [1,2,3]
    }
  }
}

2.2、java 代碼

    @Test
    public void idsQuery() throws IOException {
        //1。創建request對象,查詢用的對象一般都是SearchRequest對象
        SearchRequest mySearchRequest = new SearchRequest(index);

        //2,指定查詢條件,依賴查詢條件的對象SearchSourceBuilder的對象
        SearchSourceBuilder builder = new SearchSourceBuilder();
        builder.from(0).size(10).query(QueryBuilders.idsQuery().addIds("1", "2", "3"));

        mySearchRequest.source(builder);
        //3. 執行查詢
        SearchResponse search = client.search(mySearchRequest, RequestOptions.DEFAULT);

        //4. 獲取到_source中的數據,並展示
        //注意RESTFUL風格上是兩個hits,所以這里要兩次getHits()
        for (SearchHit hit : search.getHits().getHits()) {
            Map<String, Object> result = hit.getSourceAsMap();
            System.out.println(result);
        }
    }

關注我的公眾號【寶哥大數據】,更多干貨

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM