windows下操作elasticsearch(二)

安装和简单操作: windows下操作elasticsearch(一)

聚合查询后分组分页的问题

sql中条件查询后分组再取前几条数据很简单,但是elasticsearch相对来说复杂一点。
比如:select * from user where address like ‘%上海%’ group by name limit 10
下面是elasticsearch的写法:

SearchRequestBuilder requestBuilder = client.prepareSearch("user");
requestBuilder.setQuery(QueryBuilders.matchPhraseQuery("address", "李"));
requestBuilder.addAggregation(AggregationBuilders.terms("user_id").field("user_id.keyword").size(20));
//requestBuilder.setFrom(0);
//requestBuilder.setSize(20);
SearchResponse response = requestBuilder.execute().actionGet();
注:
requestBuilder.addAggregation:添加分组的字段
user_id:字段别名
user_id.keyword:分组的字段
requestBuilder.setSize(20):聚合查询后的分页,在分组的前面
size(20):分组后取前20

集群

1、修改配置文件:config\elasticsearch.yml,最下面添加:

cluster.name: elasticsearch_6.6.1
node.name: master
network.host: 0.0.0.0
http.port: 9200
http.cors.enabled: true 
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.0.0.64","192.0.0.77"]
discovery.zen.minimum_master_nodes: 1

2、把elasticsearch安装文件夹复制后修改文件夹名称为:slave
修改文件:slave\config\elasticsearch.yml
node.name: slave

参数说明:

cluster.name:集群名称
node.name:节点名称
network.host:访问ip
http.cors.allow-origin:跨域
node.master:是否主节点。主节点挂点后在子节点中选一个当主节点(为true时)
node.data:是否数据节点
discovery.zen.ping.unicast.hosts:节点ip
discovery.zen.minimum_master_nodes:福主节点个数

3、防火墙问题
生产环境中,由于防火墙是开启状态,需要节点服务器开放9200、9300端口

4、java客户端调整

TransportClient client = null;
	try {
	Settings settings = Settings.builder().put("cluster.name", "elasticsearch_6.6.1").put("client.transport.sniff", true).build();
	client = new PreBuiltTransportClient(settings)
		.addTransportAddress(new TransportAddress(InetAddress.getByName("192.0.0.77"), 9300))
		.addTransportAddress(new TransportAddress(InetAddress.getByName("192.0.0.64"), 9300));
	} catch (Exception e) {
		e.printStackTrace();
	}
注:
client.transport.sniff:找到集群的全部ip
addTransportAddress:配置节点ip和端口,添加集群各个节点,防止单点故障
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值