(ElasticSearch03)day81分布式查漏补缺

  • Post author:
  • Post category:其他


ElasticSearch03



1.ES聚合常见的有三类:

  • **桶(Bucket)**聚合:用来对文档做分组

    • TermAggregation:按照文档字段值分组,例如按照品牌值分组、按照国家分组
    • Date Histogram:按照日期阶梯分组,例如一周为一组,或者一月为一组
  • **度量(Metric)**聚合:用以计算一些值,比如:最大值、最小值、平均值等

    • Avg:求平均值
    • Max:求最大值
    • Min:求最小值
    • Stats:同时求max、min、avg、sum等
  • **管道(pipeline)**聚合:其它聚合的结果为基础做聚合


**注意:**参加聚合的字段必须是keyword、日期、数值、布尔类型

聚合的字段要求不可以分词。



2.Bucket聚合的数量,和排序?

默认情况下,默认进行分组统计。并对品牌的个数进行降序排序。

第一个size是聚合后每一个品牌的前十条内容。

后面的size是展示品牌的个数。

GET /hotel/_search
{
  "size": 0,//聚合后每一个品牌的前十条内容
  "aggs": {
    "brandAgg": {
      "terms": {
        "field": "brand",
        "size": 20,//后面的size是展示品牌的个数。
        "order": {
          "_count": "asc"
        }
      }
    }
  }
}



3.限定聚合范围:先写条件,再写聚合统计。提高效率

限定要聚合的文档范围,添加query条件即可



4.聚合知识小节:

aggs代表聚合,与query同级,此时query的作用是?

  • 限定聚合的的文档范围

聚合必须的三要素:

  • 聚合名称
  • 聚合类型
  • 聚合字段

聚合可配置属性有:

  • size:指定聚合结果数量
  • order:指定聚合结果排序方式
  • field:指定聚合字段



5.为什么可以同时聚合多个字段?

有好几个聚合的字段,都会被查询出来,所以不用担心。



6.在创建索引库时,通过settings来配置自定义的analyzer(分词器)



7.存储按拼音建立索引,搜索按照汉字进行搜索。

拼音分词器适合在创建倒排索引的时候使用,但不能在搜索的时候使用:

存储时的分词和搜索时的分词是不一样的。存储用汉字+拼音。搜索用汉字分词器。



8.kibana小tips:小扳手自动对齐。



9.自动补全查询:Completion

  • 参与补全查询的字段必须是completion类型。
  • 字段的内容一般是用来补全的多个词条形成的数组。



10.自动补全索引是在新增数据时,对自动补全字段进行添加。是全表的自动补充字段。



11.自动补全的原理和流程研究一下。

创建索引库时,编写自动补全字段的规则。

新增数据时,同时添加对自动补全字段的数据。

查询时,java代码拼接json的查询语句,发送请求。

解析响应结果,封装成list集合,返回前端。



12.elasticsearch与mysql之间数据同步问题:

1)异步调用:mq技术来进行elasticsearch与mysql之间的数据同步。

2)同步调用:feign

3)监听binlog:binlog对mysql对数据库性能有影响。



13.同步技术选型:

方式一:同步调用

  • 优点:实现简单,粗暴
  • 缺点:业务耦合度高


方式二:异步通知

  • 优点:低耦合,实现难度一般
  • 缺点:依赖mq的可靠性

方式三:监听binlog

  • 优点:完全解除服务间耦合
  • 缺点:开启binlog增加数据库负担、实现复杂度高

一个业务需要两个队列。需要交换机的一种模式。topic



14.常量类是怕多个工程之间写错了。

多个工程对接,需要先定义常量类。比如mq的队列名。



15.rabbitmq的交换机和队列在第一次运行的时候才会创建



16.ES集群结构:


节点(node)

:集群中的一个 Elasticearch 实例。


分片(shard)

:索引可以被拆分为不同的部分进行存储,称为分片。



17.降低成本服务器成本:服务器成本转移为硬盘存储成本。

一台服务器上面,一个节点。两个分片:一个分片,一个副本分片。

六个节点六个分片==》3个节点6个分片



18.es集群搭建:名称一样,同一个网络内,会自动搭建集群。非常方便。



19.分片和副本都是在创建索引库时,定义好。一但创建就无法修改。

要想增加片,就得数据全转移,删库,建库再重新分片,再数据插入。



20.ES集群的节点角色

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jcavq3qM-1649665768094)(../../../A_%E9%BB%91%E9%A9%AC%E8%AF%BE%E5%A0%82%E5%BD%95%E5%B1%8F%E8%B5%84%E6%96%99/173%E6%9C%9F%E5%B0%B1%E4%B8%9A%E7%8F%AD%E8%B5%84%E6%96%99/4.173%E5%88%86%E5%B8%83%E5%BC%8F(%E8%A7%86%E9%A2%91%E7%AC%94%E8%AE%B0)]-%E4%BA%8E%E5%B8%85%E8%80%81%E5%B8%88/Elasticsearch03/%E8%AE%B2%E4%B9%89/assets/image-20210723223008967.png)



21.要解决脑裂问题,要搭建奇数台。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tXKf7XLb-1649665768095)(问题2.assets/1649218325803.png)]



22.分布式存储:协调和hash

存储和查询都用的是协调节点。根据hash算法来找对应的片。通过协调接节点再返回。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8qzlgAiS-1649665768096)(../../../A_%E9%BB%91%E9%A9%AC%E8%AF%BE%E5%A0%82%E5%BD%95%E5%B1%8F%E8%B5%84%E6%96%99/173%E6%9C%9F%E5%B0%B1%E4%B8%9A%E7%8F%AD%E8%B5%84%E6%96%99/4.173%E5%88%86%E5%B8%83%E5%BC%8F(%E8%A7%86%E9%A2%91%E7%AC%94%E8%AE%B0)]-%E4%BA%8E%E5%B8%85%E8%80%81%E5%B8%88/Elasticsearch03/%E8%AE%B2%E4%B9%89/assets/image-20220329211551110.png)



23.分布式查询:

查全部的,那就得全部的节点都得查,然后聚合在一起,再排序。

比如分页排序查询,聚合在一起的数据是存在那个节点。

请求连接的协调节点的内存里面。



24.es的数据是存内存还是硬盘?

跟mysql差不多,在硬盘。

内存

buffer

–>segment–>refresh–>磁盘



25.节点挂的多了,其他的节点会增加很多副本,存储空间不够,会出现雪崩嘛

es会出现雪崩嘛。

会。不过一般节点挂的多了,集群就瘫痪了,需要及时修复。

正常没关系。如果挂的多了会雪崩的。

防止es雪崩:得需要预留存储空间。



26.定时器和多线程的优缺点:

  • 在运行几个耗时的功能的时候,尽可能的去用线程,而不是定时器,虽然定时器很简单,容易维护
  • 定时器并没有减少程序的运行时间,以及内存。只不过是代码相对于好写,好维护些而已
  • 如果需要多个任务同时执行,就要用多线程;如果需要每隔一段时间做某件事就用定时。



27.监听器监听MQ队列的时候,必须要先创建队列,否则会报错。



28.ES配置同一个网络同一个集群名字,就会自动搭建集群。



29.协调节点新增文档:

1)根据id哈希计算,再和片数进行取模运算。

2)新增文档时,协调节点根据取模后的值x,协调含有x片的节点进行新增,同时含有x片的节点去协调同步含有x片副本的节点,去同步副本。

3)最后两个协调节点同时返回给连接的协调节点。

新增文档的流程如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Mgp35zk-1649665768097)(../../../A_%E9%BB%91%E9%A9%AC%E8%AF%BE%E5%A0%82%E5%BD%95%E5%B1%8F%E8%B5%84%E6%96%99/173%E6%9C%9F%E5%B0%B1%E4%B8%9A%E7%8F%AD%E8%B5%84%E6%96%99/4.173%E5%88%86%E5%B8%83%E5%BC%8F(%E8%A7%86%E9%A2%91%E7%AC%94%E8%AE%B0)]-%E4%BA%8E%E5%B8%85%E8%80%81%E5%B8%88/Elasticsearch03/%E8%AE%B2%E4%B9%89/assets/image-20210723225436084-16485600551941.png)



30上面三个参数都为false是啥意思???

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LxLkvXIV-1649665768097)(问题2.assets/1649266574750.png)]



版权声明:本文为weixin_44310276原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。