05 2023 档案
摘要:AMQP介绍 AMQP,即 Advanced Message Queuing Protocol(高级消息队列协议),是一个网络协议,是应用层协议 的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中 间件不同产品,不同的开发语言等条件的限制。2006年,
阅读全文
摘要:我们在Centos8虚拟机中使用Docker来安装。 下载镜像 方式一:在线拉取 方式二:从本地加载 下载tar镜像包,上传到虚拟机到某个目录: docker images 使用命令加载镜像 docker load -i mq.tar 安装MQ 执行下面的命令来运行MQ容器: 解释 docker r
阅读全文
摘要:聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近实时搜索效果。 聚合的种类 聚合常见
阅读全文
摘要:排序、分页 搜索结果的排序和分页是与query同级的参数,因此同样是使用request.source()来设置。 对应的API如下: 完整代码示例 1 @Test 2 void testSortAndPage() throws IOException { 3 int page = 2, size =
阅读全文
摘要:match查询 全文检索的match和multi_match查询与match_all的API基本一致。差别是查询条件,也就是query的部分。 因此,Java代码上的差异主要是request.source().query()中的参数了。同样是利用QueryBuilders提供的方法: 而结果解析代码
阅读全文
摘要:我们以match_all查询为例 发起查询请求 代码解读 第一步,创建SearchRequest对象,指定索引库名 第二步,利用request.source()构建DSL,DSL中可以包含查询、分页、排序、高亮等 query():代表查询条件,利用QueryBuilders.matchAllQuer
阅读全文
摘要:高亮原理 我们在百度,京东搜索时,关键字会变成红色,比较醒目,这叫高亮显示: 高亮显示的实现分为两步: 1)给文档中的所有关键字都添加一个标签,例如<em>标签 2)页面给<em>标签编写CSS样式 实现高亮 语法 注意 高亮是对关键字高亮,因此搜索条件必须带有关键字,而不能是范围这样的查询。 默认
阅读全文
摘要:elasticsearch 默认情况下只返回top10的数据。而如果要查询更多数据就需要修改分页参数了。 elasticsearch中通过修改from、size参数来控制要返回的分页结果: from:从第几个文档开始 size:总共查询几个文档 类似于mysql中的limit ?, ? 基本的分页
阅读全文
摘要:搜索的结果可以按照用户指定的方式去处理或展示。 排序 elasticsearch默认是根据相关度算分(_score)来排序,但是也支持自定义方式对搜索结果排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。 普通字段排序 keyword、数值、日期类型排序的语法基本一致
阅读全文
摘要:布尔查询是一个或多个查询子句的组合,每一个子句就是一个子查询。子查询的组合方式有: (1)must:必须匹配每个子查询,类似“与” (2)should:选择性匹配子查询,类似“或” (3)must_not:必须不匹配,不参与算分,类似“非” (4)filter:必须匹配,不参与算分 比如在搜索酒店时
阅读全文
摘要:复合(compound)查询:复合查询可以将其它简单查询组合起来,实现更复杂的搜索逻辑。常见的有两种: (1)fuction score:算分函数查询,可以控制文档相关性算分,控制文档排名 (2)bool query:布尔查询,利用逻辑关系组合多个其它的查询,实现复杂搜索 相关性算分 当我们利用ma
阅读全文
摘要:所谓的地理坐标查询,其实就是根据经纬度查询,官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/geo-queries.html 常见的使用场景包括: 携程:搜索我附近的酒店 滴滴:搜索我附近的出租车 微信:搜索我
阅读全文
摘要:精确查询一般是查找keyword、数值、日期、boolean等类型字段。不会对搜索条件分词。常见的有:(1) term:根据词条精确值查询 (2) range:根据值的范围查询 term查询 因为精确查询的字段搜是不分词的字段,因此查询的条件也必须是不分词的词条。查询时,用户输入的内容跟自动值完全匹
阅读全文
摘要:@BeforeEach @BeforeEach 是 JUnit 测试框架中的一个注解,用于在每个测试方法运行之前执行一段代码或初始化操作。当你在测试类中使用 @BeforeEach 注解修饰一个方法时,该方法会在每个测试方法执行之前被调用一次。它可以用来设置测试环境、初始化测试数据或执行其他必要的准
阅读全文
摘要:Doug Lea 是 Java 并发编程领域的知名专家,他曾经是 Java 并发包的主要设计者之一,也是 Java 并发编程的重要贡献者。对于 ConcurrentHashMap 不允许插入 null 值的问题,有人问过 Doug Lea,以下是他回复的邮件内容: 1 The main reason
阅读全文
摘要:需求背景 在实际项目中,好比在一个简单的订单处理系统,其中订单有不同的状态(比如新建、已支付、已发货、已收货等),为了实现基于状态机的逻辑处理,我们可以通过switch(状态)去对应不同状态的处理逻辑。 1 public String process2() { 2 switch (status) {
阅读全文