ES--ids查询
參考: Elasticsearch Reference [7.10] ? Query DSL ? Term-level queries ? IDs
一、ID 查詢
??ES每一行數(shù)據(jù),即文檔都會(huì)有一個(gè)id,如果指定某一列field值作為id,則該列field必須為唯一鍵,類似于MySQL的UK;不過(guò)不指定,ES會(huì)自動(dòng)生成,常常為了更好的定位數(shù)據(jù),會(huì)指定一列滿足UK的field作為文檔的id,接下來(lái)我們說(shuō)一下根據(jù)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查詢
根據(jù)多個(gè)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。創(chuàng)建request對(duì)象,查詢用的對(duì)象一般都是SearchRequest對(duì)象
SearchRequest mySearchRequest = new SearchRequest(index);
//2,指定查詢條件,依賴查詢條件的對(duì)象SearchSourceBuilder的對(duì)象
SearchSourceBuilder builder = new SearchSourceBuilder();
builder.from(0).size(10).query(QueryBuilders.idsQuery().addIds("1", "2", "3"));
mySearchRequest.source(builder);
//3. 執(zhí)行查詢
SearchResponse search = client.search(mySearchRequest, RequestOptions.DEFAULT);
//4. 獲取到_source中的數(shù)據(jù),并展示
//注意RESTFUL風(fēng)格上是兩個(gè)hits,所以這里要兩次getHits()
for (SearchHit hit : search.getHits().getHits()) {
Map<String, Object> result = hit.getSourceAsMap();
System.out.println(result);
}
}
關(guān)注我的公眾號(hào)【寶哥大數(shù)據(jù)】,更多干貨
總結(jié)
- 上一篇: 缓冲区溢出保护机制——Linux
- 下一篇: 不用加氟的空调叫什么(汉典不字的基本解释