java商城2
boolquerybuillder
看上面的流程图就能很明显的看到,filter
与query
还是有很大的区别的。
比如,query
的时候,会先比较查询条件,然后计算分值,最后返回文档结果;
而filter
则是先判断是否满足查询条件,如果不满足,会缓存查询过程(记录该文档不满足结果);满足的话,就直接缓存结果。
综上所述,filter
快在两个方面:
- 1 对结果进行缓存
- 2 避免计算分值
【4】根据嵌套类型查询 (filter 与 must 是属于同一个级别的查询方式,都可以作为 query->bool 的属性)
【3】根据嵌套类型查询 (filter 与 must 是属于同一个级别的查询方式,都可以作为 query->bool 的属性)
3.1、filter: 不计算评分, 查询效率高;有缓存; (推荐)
+ term: 精确匹配;
+ match: 模糊匹配, 倒排索引;
3.2、must: 要计算评分,查询效率低;无缓存;
+term: 精确匹配 , 要评分;
+match:模糊匹配, 要评分;
BoolqueryBuilder QueryBuilders.rangequery
途中会使用canal监听MySQL的binlog日志从而实现mysql的数据实时同步到rabbitmq中
canal 主备同步的功能
使用Canal实现MySQL的数据实时同步
canal的工作原理:
canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
mysql master收到dump请求,开始推送binary log给slave(也就是canal)
canal解析binary log对象(原始为byte流)
使用canal解析binlog日志,数据落地到Kafka
先在mysql开启主备的功能
监听外面环境的地址
监听的表
rabbitmq