elasticsearch学习总结(三) Java API的使用范例1
2017-07-11 17:25
459 查看
一、关键词查询
/**
* es中查询日志
* @param page
* @param esAppLog
* @return
*/
public List<EsAppLog> getEsAppLogs(Page<EsAppLog> page, EsAppLog esAppLog) {
//前端参数
String index = esAppLog.getIndex();
String keyword = esAppLog.getKeyWord();
//查询的索引数组
SearchRequestBuilder responsebuilder = client.prepareSearch(index.split(","));
//关键词查询
if(StringUtils.isNotEmpty(keyword)){
responsebuilder.setQuery(QueryBuilders.matchQuery("message", keyword));
}
if(null != page){
int size = page.getPageSize();
int start = (page.getPageNo() - 1) * size;
responsebuilder.setFrom(start).setSize(size);
}
//执行查询
SearchResponse myresponse = responsebuilder.setExplain(true).get();
SearchHits hits = myresponse.getHits();
//总条数
if(null != page){
page.setCount(hits.getTotalHits());
}
//转换成对象
List<EsAppLog> logs = new ArrayList<EsAppLog>();
EsAppLog log = null;
for (int i = 0; i < hits.getHits().length; i++) {
Map<String,Object> item = hits.getHits()[i].getSource();
log = new EsAppLog();
log.setIp((String)item.get("host"));
log.setTime((String)item.get("@timestamp"));
log.setLogName((String)item.get("path"));
log.setLogContent((String)item.get("message"));
logs.add(log);
}
return logs;
}
二、多条件查询并返回指定字段
public void getCPUEsData(){
//索引值
SearchRequestBuilder responsebuilder = client.prepareSearch("system");
//返回指定字段
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
String[] fields = {"@timestamp","value"};
FetchSourceContext sourceContext = new FetchSourceContext(fields);
searchSourceBuilder.fetchSource(sourceContext);
responsebuilder.setSource(searchSourceBuilder);
//collectd=cpu and type_instance=system条件查询
responsebuilder.setQuery(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("collectd_type", "cpu")).must(QueryBuilders.termQuery("type_instance", "system")));
//执行查询
SearchResponse myresponse = responsebuilder.get();
SearchHits hits = myresponse.getHits();
for (int i = 0; i < hits.getHits().length; i++) {
Map<String,Object> item = hits.getHits()[i].getSource();
System.out.println(item);
}
}
/**
* es中查询日志
* @param page
* @param esAppLog
* @return
*/
public List<EsAppLog> getEsAppLogs(Page<EsAppLog> page, EsAppLog esAppLog) {
//前端参数
String index = esAppLog.getIndex();
String keyword = esAppLog.getKeyWord();
//查询的索引数组
SearchRequestBuilder responsebuilder = client.prepareSearch(index.split(","));
//关键词查询
if(StringUtils.isNotEmpty(keyword)){
responsebuilder.setQuery(QueryBuilders.matchQuery("message", keyword));
}
if(null != page){
int size = page.getPageSize();
int start = (page.getPageNo() - 1) * size;
responsebuilder.setFrom(start).setSize(size);
}
//执行查询
SearchResponse myresponse = responsebuilder.setExplain(true).get();
SearchHits hits = myresponse.getHits();
//总条数
if(null != page){
page.setCount(hits.getTotalHits());
}
//转换成对象
List<EsAppLog> logs = new ArrayList<EsAppLog>();
EsAppLog log = null;
for (int i = 0; i < hits.getHits().length; i++) {
Map<String,Object> item = hits.getHits()[i].getSource();
log = new EsAppLog();
log.setIp((String)item.get("host"));
log.setTime((String)item.get("@timestamp"));
log.setLogName((String)item.get("path"));
log.setLogContent((String)item.get("message"));
logs.add(log);
}
return logs;
}
二、多条件查询并返回指定字段
public void getCPUEsData(){
//索引值
SearchRequestBuilder responsebuilder = client.prepareSearch("system");
//返回指定字段
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
String[] fields = {"@timestamp","value"};
FetchSourceContext sourceContext = new FetchSourceContext(fields);
searchSourceBuilder.fetchSource(sourceContext);
responsebuilder.setSource(searchSourceBuilder);
//collectd=cpu and type_instance=system条件查询
responsebuilder.setQuery(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("collectd_type", "cpu")).must(QueryBuilders.termQuery("type_instance", "system")));
//执行查询
SearchResponse myresponse = responsebuilder.get();
SearchHits hits = myresponse.getHits();
for (int i = 0; i < hits.getHits().length; i++) {
Map<String,Object> item = hits.getHits()[i].getSource();
System.out.println(item);
}
}
相关文章推荐
- elasticsearch学习总结(三) API的使用范例3
- elasticsearch学习总结(三) API的使用范例2
- elasticsearch学习总结(三) API的使用范例5
- elasticsearch学习总结(三) API的使用范例4
- elasticsearch学习总结(三) API的使用范例6
- Elasticsearch学习总结六 使用Observer实现HBase到Elasticsearch的数据同步
- ElasticSearch学习16_Elasticsearch java api 基本使用之增、删、改、查
- 关于RDLC报表的一些总结,希望对正在学习使用它的朋友有所帮助
- PHP学习使用资源简单总结
- PHP学习使用资源简单总结
- NHibernate学习总结:(一)NHibernate的使用和配置
- SQL 宝典(本人总结供学习使用)
- .net学习之WSE使用总结
- linux学习使用总结-linux系统的安装和与windows双系统共享,linux常用的基本命令,今天贴在这里和大家分享
- UML学习个人总结——ROSE使用
- UML学习个人总结——ROSE使用
- Hibernate 集合属性List 的使用----Hibernate 学习笔记总结(一)
- C++标准库 之 iostream库的学习笔记(四) fstream类的使用和总结文件IO
- C#中使用try catch对系统性能的影响和处理机制的学习总结和疑问!
- PHP学习使用资源简单总结