ElasticSearch03
-
1.ES聚合常见的有三类:
-
2.Bucket聚合的数量,和排序?
-
3.限定聚合范围:先写条件,再写聚合统计。提高效率
-
4.聚合知识小节:
-
5.为什么可以同时聚合多个字段?
-
6.在创建索引库时,通过settings来配置自定义的analyzer(分词器)
-
7.存储按拼音建立索引,搜索按照汉字进行搜索。
-
8.kibana小tips:小扳手自动对齐。
-
9.自动补全查询:Completion
-
10.自动补全索引是在新增数据时,对自动补全字段进行添加。是全表的自动补充字段。
-
11.自动补全的原理和流程研究一下。
-
12.elasticsearch与mysql之间数据同步问题:
-
13.同步技术选型:
-
14.常量类是怕多个工程之间写错了。
-
15.rabbitmq的交换机和队列在第一次运行的时候才会创建
-
16.ES集群结构:
-
17.降低成本服务器成本:服务器成本转移为硬盘存储成本。
-
18.es集群搭建:名称一样,同一个网络内,会自动搭建集群。非常方便。
-
19.分片和副本都是在创建索引库时,定义好。一但创建就无法修改。
-
20.ES集群的节点角色
-
21.要解决脑裂问题,要搭建奇数台。
-
22.分布式存储:协调和hash
-
23.分布式查询:
-
24.es的数据是存内存还是硬盘?
-
25.节点挂的多了,其他的节点会增加很多副本,存储空间不够,会出现雪崩嘛
-
26.定时器和多线程的优缺点:
-
27.监听器监听MQ队列的时候,必须要先创建队列,否则会报错。
-
28.ES配置同一个网络同一个集群名字,就会自动搭建集群。
-
29.协调节点新增文档:
-
30上面三个参数都为false是啥意思???
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集群的节点角色
21.要解决脑裂问题,要搭建奇数台。
22.分布式存储:协调和hash
存储和查询都用的是协调节点。根据hash算法来找对应的片。通过协调接节点再返回。
23.分布式查询:
查全部的,那就得全部的节点都得查,然后聚合在一起,再排序。
比如分页排序查询,聚合在一起的数据是存在那个节点。
请求连接的协调节点的内存里面。
24.es的数据是存内存还是硬盘?
跟mysql差不多,在硬盘。
内存
buffer
–>segment–>refresh–>磁盘
25.节点挂的多了,其他的节点会增加很多副本,存储空间不够,会出现雪崩嘛
es会出现雪崩嘛。
会。不过一般节点挂的多了,集群就瘫痪了,需要及时修复。
正常没关系。如果挂的多了会雪崩的。
防止es雪崩:得需要预留存储空间。
26.定时器和多线程的优缺点:
- 在运行几个耗时的功能的时候,尽可能的去用线程,而不是定时器,虽然定时器很简单,容易维护
- 定时器并没有减少程序的运行时间,以及内存。只不过是代码相对于好写,好维护些而已
- 如果需要多个任务同时执行,就要用多线程;如果需要每隔一段时间做某件事就用定时。
27.监听器监听MQ队列的时候,必须要先创建队列,否则会报错。
28.ES配置同一个网络同一个集群名字,就会自动搭建集群。
29.协调节点新增文档:
1)根据id哈希计算,再和片数进行取模运算。
2)新增文档时,协调节点根据取模后的值x,协调含有x片的节点进行新增,同时含有x片的节点去协调同步含有x片副本的节点,去同步副本。
3)最后两个协调节点同时返回给连接的协调节点。
新增文档的流程如下:
30上面三个参数都为false是啥意思???