一.步骤
- 创建一个client对象。
- 创建一个查询对象,可以使用QueryBuilders工具类创建QueryBuilder对象。
- 使用client执行查询。【在查询条件后设置from和size,form是起始行号,而size是每页显示的数据个数】
- 得到查询的结果。
- 取查询结果的总记录。
- 取查询结果列表。
- 关闭client对象。
二.代码块
@Test
/*
根据分页设置进行查询
*/
public void testQueryStrings2()throws Exception{
// 1创建一个Settings对象,相当于一个配置信息。主要配置集群名称。
Settings settings = Settings.builder()
//put参数1是配置名称,参数2是配置值
.put("cluster.name","my-elasticsearch")
.build();
// 2创建一个客户端Client对象。
TransportClient client = new PreBuiltTransportClient(settings);
//2.2 获取集群的节点列表
//2.2.1 参数1是InetAddress.getByName获取ip地址(PPT方式),参数二是端口号(节点对外的端口),而不是服务端口号
client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),9301));
client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),9302));
client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),9303));
// 3.创建一个查询对象,可以使用QueryBuilders工具类创建QueryBuilder对象。
QueryBuilder queryBuilder = QueryBuilders
.queryStringQuery("文档对象2")//根据字符串进行创建QueryBuilder对象
.defaultField("title");//设置默认搜索域【field】
// 4.使用client执行查询。
SearchResponse searchResponse = client.prepareSearch("index_hello")//查询的索引库
.setTypes("article")//查询的type
.setQuery(queryBuilder)//查询条件
.setFrom(0)//设置起始行号
.setSize(5)//每页显示行数
.get();//执行查询
// 5.得到查询的结果集。
SearchHits hits = searchResponse.getHits();
// 6.取查询结果的总记录。
System.out.println("查询结果的总记录:" + hits.getTotalHits());
// 7.取查询结果列表。
//7.1获取查询结果的迭代器
Iterator<SearchHit> iterator = hits.iterator();
//7.2遍历迭代器
while(iterator.hasNext()){
SearchHit searchHit = iterator.next();
System.out.println("------------获取字符串形式的文档对象数据---------");
System.out.println("查询的结果为:" + searchHit.getSourceAsString());
System.out.println("--------获取文档的属性---------");
Map<String, Object> document = searchHit.getSource();//获取map集合
System.out.println(document.get("id"));
System.out.println(document.get("title"));
System.out.println(document.get("context"));
}
// 8.关闭client对象。
client.close();
}
三.范例