ElasticSearch 7.x 默认不再支持指定索引类型, 默认索引类型是_doc
新增: PUT
删除: DELETE
修改: POST
查询: GET/POST 获得索引结构只能用GET /map
1.创建搜索请求对象 SearchRequest
2.创建搜索源构建者对象
准备查询构建者对象QueryBuilders.matchQuery()方法
3.用搜索源构建者对象builder .query( )方法;
4.将搜索构建者对象searchSearch加入到搜索请求对象中, searchRequest.source(builder);
5.将搜索请求对象searchRequest放入剩余高水平客户端对象restHighLevelClient的 .search(searchRequest,RequestOptions.DEFAULT)方法中.
-
新建一个ConnectionFactory连接工厂,
factory.setHost(“192.168.10.128”);
factory.setPort(5672);
factory.setUsername(“guest”);
factory.setPassword(“guest”);
factory.setVirtualHost("/"); //设置虚拟主机return factory.newConnection();
2.创建通道对象
connection.createChannel();
3.用通道创建队列
//声明通道,exclusive为true后此连接将受限,arguments:例如路由头
channel.queueDeclare(queue,durable,exclusive,autoDelete,arguments);
4.用通道发布消息到队列
channel.basicPublish(exchange,routingKey,BasicProperties,byte[])
5.消费:
创建一个new DefaultConsumer(channel){@Override 重写handleDelivery()方法,输出body } 的构造方法
用通道指定预抓取的数量(超过将无法接收消息) 和手动ack
channel.basicQos(1);
服务器是否需要显式确认autoAck:false
channel.basicConsume("Work", false, consumer);
手动ack: channel.basicAck();
6.用通道声明一个交换机,Builtin:内键指令,内装式交换机类型:DIRECT(“direct”), FANOUT(“fanout”), TOPIC(“topic”), HEADERS(“headers”);
channel.exchangeDeclare(“myExchange”, BuiltinExchangeType.FANOUT);
7.用通道将交换机绑定到队列中
channel.queueBind(“HelloWorld”, “myExchange”, “routingKey”);
生产者创建Topic的exchange并且绑定到队列中,这次绑定可以通过*和#关键字,对指定RoutingKey内容,编写时注意格式 xxx.xxx.xxx去编写, *代表 一个xxx,而#代表多个xxx.xxx,在发送消息时,指定具体的RoutingKey到底是什么。
8.绑定队列的时候有路由键,发送消息的时候也有路由键,发送时与绑定时的路由键一定要保持一致才能成功发送
9.rabbitmq的事务:事务可以保证消息100%传递
Confirm的确认机制: 保证消息到达交换机,交换机无法持久化信息
//开启confirm
channel.confirmSelect();
//确定批量操作confirm
chanel.waitForConfirmsOrDie();
Return机制: 保证消息到队列,队列可以持久化信息
channel.addReturnListener(new ReturnListener(){
重写handleReturn方法
});
mandatory:强制的; 法定的; 义务的
channel.basicPublish(“exchange”,“routingKey”,mandatory,null,msg.getBytes());
10、spring boot整合,
创建新的交换机
return TopicExchange(“boot-topic-exchange”, false, false, null);
创建新的队列
return Queue(“boot-queue”, true, false, false);
绑定队列到交换机
BindingBuilder.bind(queue).to(topicExchange).with(".red.");