lder).must(rangeBuilder);
TermsBuilder termsBuilder = AggregationBuilders.terms("DeviceIDAgg").size(Integer.MAX_VALUE)
.field(DeviceIDFieldName);
SearchResponse searchResponse = client.prepareSearch(IndexName)
.setQuery(queryBuilder).addAggregation(termsBuilder)
.execute().actionGet();
Terms terms = searchResponse.getAggregations().get("DeviceIDAgg");
if (terms != null) {
for (Terms.Bucket entry : terms.getBuckets()) {
resultsMap.put(entry.getKey(),
String.valueOf(entry.getDocCount()));
}
}
return resultsMap;
}
?
Aggregation查询可以查询类似统计分析这样的功能:如某个月的数据分布情况,某类数据的最大、最小、总和、平均值等。
?
三、集群配置
?
配置文件elasticsearch.yml
?
集群名和节点名:
?
#cluster.name: elasticsearch
?
#node.name: "Franz Kafka"
?
是否参与master选举和是否存储数据
?
#node.master: true
?
#node.data: true
?
分片数和副本数
?
#index.number_of_shards: 5
#index.number_of_replicas: 1
?
master选举最少的节点数,这个一定要设置为整个集群节点个数的一半加1,即N/2+1
?
#discovery.zen.minimum_master_nodes: 1
?
discovery ping的超时时间,拥塞网络,网络状态不佳的情况下设置高一点
?
#discovery.zen.ping.timeout: 3s
?
注意,分布式系统整个集群节点个数N要为奇数个!!
?
四、Elasticsearch插件
?
1、elasticsearch-head是一个elasticsearch的集群管理工具:./elasticsearch-1.7.1/bin/plugin -install mobz/elasticsearch-head
?
2、elasticsearch-sql:使用SQL语法查询elasticsearch:./bin/plugin -u https://github.com/NLPchina/elasticsearch-sql/releases/download/1.3.5/elasticsearch-sql-1.3.5.zip --install sql
?
github地址:https://github.com/NLPchina/elasticsearch-sql
?
3、elasticsearch-bigdesk是elasticsearch的一个集群监控工具,可以通过它来查看ES集群的各种状态。
?
安装:./bin/plugin -install lukas-vlcek/bigdesk
?
访问:http://192.103.101.203:9200/_plugin/bigdesk/,
?
4、elasticsearch-servicewrapper插件是ElasticSearch的服务化插件,
?
在https://github.com/elasticsearch/elasticsearch-servicewrapper
下载该插件后,解压缩,将service目录拷贝到elasticsearch目录的bin目录下。
?
而后,可以通过执行以下语句安装、启动、停止ElasticSearch:
?
sh elasticsearch install
?
sh elasticsearch start
?
sh elasticsearch stop