0%

MAC地址

MAC地址是用于识别数据链路中互连的节点,标识同一个链路中不同计算机的的一种识别码

配置

elasticsearch配置有两种配置方式,一种是静态配置,只能在配置文件中进行配置;一种是动态配置,可以通过_cluster/settings进行设置

网络配置

本地网关配置

本地网关是当所有集群重新启动时存储集群状态和分片数据的模块,属于静态配置

1
2
3
4
5
6
7
8
9
"gateway": {
"recover_after_master_nodes": "0",// 集群中存在多少个主节点才启动恢复过程
"expected_nodes": "-1", // 集群中的预计节点数量
"recover_after_data_nodes": "-1", // 集群中存在多少个数据节点才启动恢复过程
"expected_data_nodes": "-1",// 集群中数据节点预计数量
"recover_after_time": "0ms", // 节点数满足后,等待多长时间开始恢复过程
"expected_master_nodes": "-1",// 集群中主节点预计数量
"recover_after_nodes": "-1" // 集群中存在多少个节点才启动恢复过程
}
阅读全文 »

IO操作底层实现

进行执行IO操作就是向操作系统发起请求,写操作是让操作系统将缓冲区的数据写入磁盘,读操作是让操作系统将数据写入到缓冲区

WX20220529-151312@2x

可以看到上图中的操作是读取磁盘的内容进行的操作,从磁盘读取数据需要通过DMA把数据写入到内核内存缓冲区,一旦磁盘控制器把缓冲区填满,内核就会把数据从内核空间的临时缓冲区拷贝到进程执行read()调用指定的缓冲区中

可能大家会感到意外,为什么还要有一个内核缓冲区和一个用户空间缓冲区呢,这一步从内核空间拷贝到用户空间是不是多余,这个问题首先硬件不能直接访问用户空间;其次,磁盘是基于块存储的,操作的是固定大小的数据块,而用户进程请求的可能是任意大小的或非对齐的数据块,内核需要在中间进行数据分解、再组合工作

阅读全文 »

聚合操作aggregations

聚合操作是一种基于搜索的数据汇总,可以对文档中的数据进行统计汇总、分组等,可分为以下几类

  • Bucketing 分组聚合 每个分组都关联一个关键字和相关文档标准
  • Metric 度量聚合 在一组文档中对某一个数字类型字段进行计算
  • Matrix 矩阵聚合
  • Pipeline 管道聚合 该聚合的数据源是其他聚合的输出,然后进行相关指针的计算

聚合操作的语法如下

1
2
3
4
5
6
7
8
9
10
"aggregations" : { // 可缩写为aggs
"<aggregation_name>" : { // 定义的逻辑名
"<aggregation_type>" : { // 聚合类型
<aggregation_body>
}
[,"meta" : { [<meta_data_body>] } ]?
[,"aggregations" : { [<sub_aggregation>]+ } ]?
}
[,"<aggregation_name_2>" : { ... } ]*
}
阅读全文 »

elasticsearch分析器

索引分析是在文档被发送到倒排索引之前,把一个文本块分析成一个个单独的词,为了后面的倒排索引做准备,然后标准化这些词为标准形式,提高它们的可搜索性,这些工作是分析器完成的,一个分析器是一个组合,用于将三个功能放在一起

  • 字符过滤器(character filter):接收原字符流经过字符过滤器处理,通过添加、删除、替换操作原字符流。它们的工作是在标记化之前处理字符串,字符串过滤器可以去除HTML标记。可以有零个或多个字符过滤器。
  • 分词器(tokenizer):分词器被标记化成独立的词,将一整段文本拆分为一个个的词。一个简单的分词器可以根据空格或逗号分开。有且只有一个分词器。
  • 分词过滤器(token filters):将切分的单词添加、删除或修改。如将所有单词小写。可以有零个或多个分词过滤器。

elasticsearch有很多内置的分析器,也可以自定义分析器

调用顺序为Character Filters->Tokenizer->Token Filters

阅读全文 »