文档章节

Elasticsearch的Java API的Cookbook

go2school
 go2school
发布于 2016/03/15 14:49
字数 464
阅读 267
收藏 4

1、查询索引的数据量

CountResponse response = client.prepareCount(indexname)
		        .setQuery(QueryBuilders.matchAllQuery()).setTypes(indextype)
		        .execute()
		        .actionGet();


2、判断一个索引是否存在

client.admin().indices().prepareExists(indexName).execute().actionGet().isExists();


3、判断索引中同时具有两个字段A和B的文档的个数

MetricsAggregationBuilder aggregation =
		        AggregationBuilders
		                .cardinality("agg").script("doc['A'].value + '#' + doc['B'].value");

4、设置布尔值查询条件,设置查询A、B、C三个条件,同时,设置过滤器,将时间过滤在dTFrom和dtTo的范围内

SearchRequestBuilder srb = client.prepareSearch(actual_index_arr).setTypes(indexType);
		
		
		//添加查询条件
		BoolQueryBuilder boolQuery = new BoolQueryBuilder();
		if(A!= null)
			boolQuery.must(QueryBuilders.matchQuery("A", A));
		if(B!= null)
			boolQuery.must(QueryBuilders.matchQuery("B", B));
		if(C!= null)
			boolQuery.must(QueryBuilders.matchQuery("C", C));		
		srb.setQuery(QueryBuilders.filteredQuery(boolQuery,
                FilterBuilders.rangeFilter("WRITETIME").from(dtFrom).to(dtTo))).addField("_id");//only return id

5、创建索引并设置文档集合的mapping

if(isIndexExist(client, indexName) == false)
			client.admin().indices().prepareCreate(indexName).execute().actionGet();
		
		//read mapping
		BufferedReader br = new BufferedReader(new FileReader(file));
		String tmp = "";
		StringBuilder sb = new StringBuilder();
		while((tmp = br.readLine()) != null)
		{
			sb.append(tmp);
		}
		br.close();
		String ct = sb.toString();
		
		//make mapping
		client.admin().indices().preparePutMapping(indexName).setType(indexType).setSource(ct).execute().actionGet();

6、嵌套聚集查询求和,类似 select k1,k2,sum(v) from t group by k1,k2

//设置group by k1, k2和sum(v)的聚集
TermsBuilder tb = AggregationBuilders.terms("k1BUILDER").field("k1").size(0);//
tb.subAggregation(AggregationBuilders.terms("k2BUILDER").field("k2").size(0).subAggregation(AggregationBuilders.sum("sum_by_value").field("v")));
srb.addAggregation(tb);		

//获得结果
SearchResponse sr = srb.get();		

//处理结果		
Terms agg = sr.getAggregations().get("k1BUILDER");		
//返回的聚集数据
for(Terms.Bucket entry : agg.getBuckets())
{			
	Terms sub_agg = entry.getAggregations().get("k2BUILDER");
	String eid_key = entry.getKey();   
	for(Terms.Bucket sub_entry : sub_agg.getBuckets())
	{	
		String k2_key = sub_entry.getKey();// Key		    
		Aggregations agg_its = sub_entry.getAggregations();
		Sum sm = agg_its.get("sum_by_value");
				
	}			
}

7、批量写入数据

BulkProcessor bulkProcessor = BulkProcessor.builder(
	client,  
	new BulkProcessor.Listener() {		            
		@Override
		public void beforeBulk(long executionId, BulkRequest request) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void afterBulk(long executionId,
				BulkRequest request, BulkResponse response) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void afterBulk(long executionId,
				BulkRequest request, Throwable failure) {
			// TODO Auto-generated method stub
			
		} 
	})
	.setBulkActions(bulkCacheSize) 	
	.setFlushInterval(TimeValue.timeValueSeconds(5)) 
	.setConcurrentRequests(1) 		       
	.build();
	
for(int i=0;i<json_lst.size();i++)
{						
	//使用记录里的ID作为主键,以保持数据的唯一性
	bulkProcessor.add(new IndexRequest(indexname, typename,  id_lst.get(i)).source(json_lst.get(i)));			
}
bulkProcessor.flush();
bulkProcessor.close();



© 著作权归作者所有

go2school
粉丝 11
博文 34
码字总数 14674
作品 0
技术主管
私信 提问
elasticsearch和mysql的数据同步采用哪种方案合适。

最近公司在使用elasticsearch,使用的是6.5版本的。其中有一个需求就是需要把数据库已有的数据同步到elasticsearch中来,调研了几种方案。 logstash,elasticsearch-jdbc,自己实现。 暂时采...

lanceli
03/18
867
5
ElasticSearch Client详解

从本文开始,将与大家进入到Elasticsearch的精妙世界中来,基于当前最新的6.4.x版本。 本文将重点探讨ElasticSearch Client的相关知识,重点关注TransportClient与Rest Client。Elasticsear...

丁威
03/10
0
0
Grafana、elasticsearch、kafka、logstash和pinpoint结合

一、Grafana 1)下载安装 wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.2.0-1.x8664.rpm sudo yum localinstall grafana-4.2.0-1.x86_64.rpm 2)启动 serv......

半船水
2017/10/25
287
0
ELK 实验(二)安装Elastic Search 单节点

Linux 安装 java -version echo $JAVA_HOME 木有返回,环境没有设置好。。。 vi /etc/profile export JAVAHOME=/usr/java/jdk1.8.0162 export JREHOME=$JAVAHOME/jre export CLASSPATH=$JAV......

pcdog
2018/04/15
0
0
bboss v5.2.1 发布,Elasticsearch Rest Client

The best Elasticsearch Highlevel Rest Client API-----bboss v5.2.1 发布。 主要功能特色 ElasticSearch兼容性:2.x,5.x,6.x,+ JDK兼容性: jdk 1.7+ Spring boot兼容性:1.x,2.x ORM和DSL二......

bboss
2018/11/27
680
2

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
4
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
5
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部