![](https://img-blog.csdnimg.cn/direct/91bd7754a2224bedbb4215e65d53fff6.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
微服务
嘿嘿
我以为心都空了
嘿嘿
展开
-
01-今日内容介绍
1.没有嘿嘿…原创 2024-06-18 16:46:00 · 234 阅读 · 0 评论 -
02-数据聚合-聚合的分类
你可以是keyword类型,可以是日期类型,也可以是数值的,但绝对不能是text类型的。聚合(aggregations)可以实现对文档数据的统计、分析、运算。度量(Metric)聚合:用以计算一些值,比如:最大值、最小值、平均值等。 Stats:同时求max、min、avg、sum等。管道(pipeline)聚合:其它聚合的结果为基础做聚合。 Metric:对文档数据做计算,例如avg。 Pipeline:基于其它聚合结果再做聚合。 聚合是对文档数据的统计、分析、计算。原创 2024-06-18 16:45:30 · 319 阅读 · 0 评论 -
03-数据聚合-DSL实现Bucket聚合
默认情况下,Bucket聚合会统计Bucket内的文档数量,记为_count,并且按照_count降序排序。现在,我们要统计所有数据中的酒店品牌有几种,此时可以根据酒店品牌的名称做聚合。aggs代表聚合,与query同级,此时query的作用是? order:指定聚合结果排序方式。 size:指定聚合结果数量。2.Bucket聚合-聚合结果排序。3.Bucket聚合-限定聚合范围。 field:指定聚合字段。1.DSL实现Bucket聚合。 限定聚合的的文档范围。原创 2024-06-18 16:45:00 · 332 阅读 · 0 评论 -
04-数据聚合-DSL实现Metrics聚合
例如,我们要求获取每个品牌的用户评分的min、max、avg等值.1.DSL实现Metrics 聚合。# 嵌套聚合metric、原创 2024-06-18 16:44:29 · 248 阅读 · 0 评论 -
05-数据聚合-RestClient实现聚合
1.RestAPI实现聚合。3.RestAPI实现聚合。原创 2024-06-18 16:43:58 · 400 阅读 · 0 评论 -
06-数据聚合-多条件聚合
索引我们只需要对索引库中的数据,针对品牌字段,城市字段去做聚合,就能得到索引库中包含哪些品牌,哪些城市。我们页面上有很多过滤条件,用户点击这里的过滤条件就会对搜索结果做过滤,筛选出符合条件的哪些。这些条件是索引库中包含了哪些城市信息,我们就应该展示哪些信息,索引库中包含哪些品牌,我们就展示哪些品牌。左侧其实是过滤项的名称,右侧部分是真正的过滤条件,这是典型的key value结构,左侧是key,右侧是value。需求:搜索页面的品牌、城市等信息不应该是在页面写死,而是通过聚合索引库中的酒店数据得来的。原创 2024-06-18 16:43:14 · 276 阅读 · 0 评论 -
07-数据聚合-带条件过滤的聚合
如果在搜索的时候没有加任何条件,那么搜到的是索引库的所有数据,这个时候对索引库的所有数据去做聚合得到城市和品牌有哪些没问题。但是我们现在搜了虹桥,那我得到的结果一定是跟上海虹桥有关的结果,那么这个时候上海虹桥火车站有关的,那他的城市对应的一定是上海,但是你却对索引库的所有数据去做聚合,你得到的城市一定包括了所有城市,上海北京深圳等等。在查酒店的时候用的是什么条件,在做聚合的时候也要用什么条件。这个时候用户条件是虹桥,我们就应该对虹桥相关的酒店去做聚合,也就是要限定聚合的范围。怎么限定聚合的范围?原创 2024-06-18 16:42:43 · 326 阅读 · 0 评论 -
08-自动补全-安装拼音分词器
要实现根据字母做补全,就必须对文档按照拼音分词。在GitHub上恰好有elasticsearch的拼音分词插件。 (2)上传到虚拟机中,elasticsearch的plugin目录。 (3)重启elasticsearch。 (1)解压。 (4)测试。原创 2024-06-18 16:42:12 · 206 阅读 · 0 评论 -
09-自动补全-自定义分词器
1.自定义分词器刚才学习了拼音分词器的基本用法,但是这个时候的拼音分词器还没有办法直接应用在生产环境,他还存在一些问题,为什么?我们刚刚测试的“如家酒店还不错”,他在分词的时候rjjdhbc的全拼首字母在这里,也就是说明这句话首先没有被分词,而是作为一个整体出现,这是拼音分词器的第一个问题:他不会分词。第二个问题:他还把这句话中的每一个字都形成了一个拼音,这没什么用,将来还不如形成全拼。比如如家你来个rujia。原创 2024-06-18 08:43:04 · 539 阅读 · 0 评论 -
10-自动补全-DSL实现自动补全查询
这是因为自动补全是根据词条做自动补全的,如果说你把他俩合成一个字符串,将来我们去做自动补全的时候,只能根据s来补全,当用户输入w的时候就不可能补全出产品名称。如果分成数组,用户输入s的时候能补全Sony,用户输入w的时候能补全WH-1000XM3,这样更加人性化了。为了提高补全查询的效率,对于文档中字段的类型有一些约束:参与补全查询的字段必须是completion类型。比如下面就给出了三条数据,第一条数据它的字段名叫title,字段值是一个数组,这里形成了两个词条,而不是一个词条形成一个字符串。原创 2024-06-17 11:26:30 · 397 阅读 · 0 评论 -
11-自动补全-修改酒店索引库数据结构
注意:name、all是可分词的,自动补全的brand、business是不可分词的,要使用不同的分词器组合。索引库添加一个新字段suggestion,类型为completion类型,使用自定义的分词器。给HotelDoc类添加suggestion字段,内容包含brand、business。修改索引库的name、all字段,使用自定义分词器。1.实现hotel索引库的自动补全、拼音搜索功能。修改hotel索引库结构,设置自定义拼音分词器。重新导入数据到hotel库。原创 2024-06-17 11:25:59 · 319 阅读 · 0 评论 -
12-自动补全-RestAPI实现补全查询
1.RestAPI实现自动补全。2.RestAPI实现自动补全。原创 2024-06-17 11:25:29 · 331 阅读 · 0 评论 -
13-自动补全-实现搜索框自动补全
在服务端编写接口,接收该请求,返回补全结果的集合,类型为List。1.实现酒店搜索页面输入框的自动补全。出bug了,下次再管。原创 2024-06-17 11:24:42 · 246 阅读 · 0 评论 -
14-数据同步-同步方案分析
又没办法直接调,那我就回去调用hotel-demo当中的更新索引库的一个接口,你没办法更新es,你调用我的接口,我自己去更新就行了。所以在在原来的过程中,就从一步变成了三部,先写数据库,然后调hotel-demo,然后hotel-demo更新es,而且这三个步骤是依次执行的,也就是写完数据库了才能去调这个接口,而调接口了以后才能去调es的api实现更新,而更新完成结果才能返回到hotel-demo,houtel-demo处理完才会返回给hotel-admin,admin才会返回给用户。原创 2024-06-17 11:24:09 · 374 阅读 · 0 评论 -
15-数据同步-导入酒店管理项目
当酒店发生增、删、改时去发消息,需要三个队列,三个不同的routingkey吗?其实不是,虽然酒店发生的事件时增删或改,但是对应到es里面你做增或改都是往索引库里面插入数据,因为在es中,你往里面插入数据,id如果不存在,就是新增,id如果存在,就是修改。当酒店数据发生增、删、改时,要求对elasticsearch中数据也要完成相同操作。1导入课前资料提供的hotel-admin项目,启动并测试酒店数据的CRUD。3在hotel-admin中的增、删、改业务中完成消息发送。5启动并测试数据同步功能。原创 2024-06-17 11:23:34 · 333 阅读 · 0 评论 -
16-数据同步-声明队列和交换机
4.声明队列和交换机。原创 2024-06-17 11:23:02 · 343 阅读 · 0 评论 -
17-数据同步-发送mq消息
【代码】17-数据同步-发送mq消息。原创 2024-06-17 11:22:30 · 360 阅读 · 0 评论 -
18-数据同步-监听MQ消息
【代码】18-数据同步-监听MQ消息。原创 2024-06-17 11:21:40 · 367 阅读 · 0 评论 -
19-数据同步-测试同步功能
1.有一个之前的错没解决,所以这里查询有问题。原创 2024-06-17 11:20:59 · 219 阅读 · 0 评论 -
01-今日课程介绍
1.没有嘿嘿…原创 2024-06-17 11:19:54 · 402 阅读 · 0 评论 -
02-DSL查询语法-DSL查询分类和基本语法
DSL它是基于json风格的一个查询语句,也就是用json去描述我们的查询条件,然后发送给我们的ES服务,ES服务基于这些查询条件返回结果给你。 (3)精确查询:根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。 (5)复合(compound)查询:复合查询可以将上述各种查询条件组合起来,合并查询条件。 (1)查询所有:查询出所有数据,一般测试用。 (4)地理(geo)查询:根据经纬度查询。查询DSL的基本语法是什么?原创 2024-06-17 11:19:24 · 236 阅读 · 0 评论 -
03-DSL查询语法-全文检索查询
比如有一个旅游网站,有一个搜索框,在里面可以输入酒店的相关信息,酒店的名称也好,酒店的地理位置也好,点击搜索,他就可以帮你去检索出相关的酒店返回给你。或者是去京东买东西,搜索“西门子冰箱”,这时候点击搜索按钮,我们的京东后台就可以把这个数据得到以后,先对这个内容做分词,然后得到西门子和冰箱两个词,然后拿着这两个词,分别取倒排索引库里面进行检索和匹配,得到相关的文档,也就是商品,然后返回给你。 multi_match:根据多个字段查询,参与查询字段越多,查询性能越差。# multi_match查询。原创 2024-06-17 11:18:48 · 330 阅读 · 0 评论 -
04-DSL查询语法-精确查询
精确查询一般是查找keyword、数值、日期、boolean等类型字段。所以 不会 对搜索条件分词。 term查询:根据词条精确匹配,一般搜索keyword类型、数值类型、布尔类型、日期类型字段。 range查询:根据数值范围查询,可以是数值、日期的范围。精确查询常见的有term查询和range查询。 term:根据词条精确值查询。 range:根据值的范围查询。精确查询常见的有哪些?原创 2024-06-17 11:18:18 · 376 阅读 · 0 评论 -
05-DSL查询语法-地理查询
(2)geo_distance:查询到指定中心点小于某个距离值的所有文档。:查询geo_point值落在某个矩形范围的所有文档。 滴滴:搜索我附近的出租车。 携程:搜索我附近的酒店。根据经纬度查询,官方文档。 微信:搜索我附近的人。原创 2024-06-16 00:25:35 · 198 阅读 · 0 评论 -
06-DSL查询语法-相关性算法
当我们利用match查询时,文档结果会根据与搜索词条的关联度打分(_score),返回结果时按照分值降序排列。 fuction score:算分函数查询,可以控制文档相关性算分,控制文档排名。 BM25:在elasticsearch5.0之后,会随着词频增加而增大,但增长曲线会趋于水平。 TF-IDF:在elasticsearch5.0之前,会随着词频增加而越来越大。TF-IDF:在elasticsearch5.0之前,会随着词频增加而越来越大。原创 2024-06-16 00:24:58 · 124 阅读 · 0 评论 -
07-DSL查询语法-FunctionScoreQuery
加权方式:function score 与 query score如何运算。,可以修改文档的相关性算分(query score),根据新得到的算分排序。:用function score 替换 query score。:给一个常量值,作为函数结果(function score) 算分函数:如何计算function score。过滤条件,符合条件的文档才会被重新算分。:自定义计算公式,公式结果作为函数结果。:用文档中的某个字段值作为函数结果。:随机生成一个值,作为函数结果。原创 2024-06-16 00:24:28 · 388 阅读 · 0 评论 -
08-DSL查询语法-BooleanQuery
比如有一个页面,去搜索一个酒店信息,首先在输入框里面输入酒店信息,然后你还可以在下面选择过滤条件,比如要求价格在100-300之间,同时要求地址在上海,这个时候你的要求就是“满足输入的名字,并且城市在上海,并且价格范围在100-300之间”这种关系组合了。因此,虽然Boolean查询里面有四种组合关系,但是除了跟算分相关的,一般就是关键字,用户输入的那个,除了那个以外,他应该放到must或shoud里面以外,剩下的过滤条件都应该放到must或者filter里面,尽可能减少算分,提高查询效率。原创 2024-06-16 00:23:27 · 396 阅读 · 0 评论 -
09-搜索结果处理-排序
elasticsearch支持对搜索结果排序,默认是根据相关度算分(_score)来排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。一旦自己指定了排序字段,ES就会放弃打分,一定程度上提升了性能。评价是score字段,价格是price字段,按照顺序添加两个排序规则即可。2.案例:对酒店数据按照用户评价降序排序,评价相同的按照价格升序排序。3.案例:实现对酒店数据按照到你的位置坐标的距离升序排序。# 找到121.612282, 31.034661。原创 2024-06-16 00:22:56 · 116 阅读 · 0 评论 -
10-搜索结果处理-分页
比如你现在要查询990到1000这十条数据,对于ES来讲,他只能是查出从0-1000的所有数据,然后去截从990到1000的这一部分,这是由它的数据结构来决定的。你第一次查询的时候,我把所有的数据都给你,然后缓存起来,将来你查的时候我再从内存中截取你想要的部分,这种方式对内存的消耗太大了。排序了以后有一个好处,它是有顺序的,然后去做分页的时候,先查询前十条,然后记住第十条的价格,再次查询的时候从这个价格开始往后查询。:分页时需要排序,原理是从上一次的排序值开始,查询下一页数据。官方推荐使用的方式。原创 2024-06-16 00:22:00 · 773 阅读 · 0 评论 -
11-搜索结果处理-高亮
高亮:就是在搜索结果中把搜索关键字突出显示。 将搜索结果中的关键字用标签标记出来。 在页面中给标签添加css样式。原创 2024-06-16 00:21:29 · 144 阅读 · 0 评论 -
12-RestClient查询文档-快速入门
传入Request.source() 的 query() 方法。 传入Request.source() 的 query() 方法。 2.准备Request.source(),也就是DSL。 2.准备Request.source(),也就是DSL。 4.解析结果(参考JSON结果,从外到内,逐层解析) QueryBuilders来构建查询条件。 3.发送请求,得到结果。 3.发送请求,得到结果。原创 2024-06-16 00:20:48 · 141 阅读 · 0 评论 -
13-RestClient查询文档-match、term、range、bool查询
全文检索的match和multi_match查询与match_all的API基本一致。差别是查询条件,也就是query的部分。要构建查询条件,只要记住一个类:QueryBuilders。3.复合查询-boolean query(可以链式编程)// 添加filter条件。// 添加must条件。原创 2024-06-16 00:20:17 · 184 阅读 · 0 评论 -
14-RestClient查询文档-排序和分页
【代码】14-RestClient查询文档-排序和分页。原创 2024-06-16 00:19:47 · 138 阅读 · 0 评论 -
15-RestClient查询文档-高亮显示
高亮API包括请求DSL构建和结果解析两部分。 SearchRequest的source()方法。高亮结果解析是参考JSON结果,逐层解析。原创 2024-06-16 00:19:16 · 287 阅读 · 0 评论 -
16-黑马旅游案例-搜索、分页
定义IHotelService中的search方法,利用match查询实现根据关键字搜索酒店信息。定义controller接口,接收页面请求,调用IHotelService的search方法。 利用match查询,根据参数中的key搜索all字段,查询酒店信息并返回。步骤3:在IHotelService中定义一个方法,实现搜索功能。1.案例1:实现黑马旅游的酒店搜索功能,完成关键字搜索和分页。步骤2:定义controller接口,接收前端请求。步骤1:定义类,接收前端请求参数。原创 2024-06-16 00:15:25 · 235 阅读 · 0 评论 -
17-黑马旅游案例-条件过滤
修改RequestParams类,添加brand、city、starName、minPrice、maxPrice等参数。 修改search方法的实现,在关键字搜索时,如果brand等参数存在,对其做过滤。步骤一:拓展IUserService的search方法的参数列表。步骤二:修改search方法,在match查询基础上添加过滤条件。多个条件之间是AND关系,组合多条件用BooleanQuery。1.案例2:添加品牌、城市、星级、价格等过滤功能。参数存在才需要过滤,做好非空判断。原创 2024-06-16 00:14:09 · 126 阅读 · 0 评论 -
18-黑马旅游分析-我附近的酒店
修改search方法业务逻辑,如果location有值,添加根据geo_distance排序的功能。修改RequestParams参数,接收location字段。我们要根据这个坐标,将酒店结果按照到这个点的距离升序排序。1.案例3:我附近的酒店。原创 2024-06-16 00:13:44 · 117 阅读 · 0 评论 -
19-黑马旅游案例-广告置顶
注意isAD字段是Boolean类型,不是boolean类型,不然广告不会显示,实测String类型也行,(3)修改search方法,添加function score功能,给isAD值为true的酒店增加权重。(2)挑选几个你喜欢的酒店,给它的文档数据添加isAD字段,值为true。 score:根据酒店的score字段排序,也就是用户评价,降序。在添加之前,先修改索引库添加一个isAD字段,然后再去修改字段的值。 price:根据酒店的price字段排序,就是价格,升序。原创 2024-06-16 00:10:36 · 256 阅读 · 0 评论 -
01-今日课程介绍
1.没有嘿嘿。。。原创 2024-06-15 23:57:48 · 74 阅读 · 0 评论 -
02-初识ES-什么是elasticsearch
1.什么是elasticsearch(1)elasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。解释:比如在github网站上搜索一些仓库,但我们去搜索的时候,它不仅能把相关仓库给我们搜出来,还能把我们搜的关键字它所在的代码,也给我们高亮展示出来。还有京东上面搜索商品信息。(2)elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域。原创 2024-06-15 23:57:18 · 235 阅读 · 0 评论