rocketmq 存储设计
elasticsearch 集群优化
elasticsearch 面试题
1、为什么要使用ElasticSearch?
系统中的数据,随着业务的发展和时间的推移, 将会非常多, 而业务中往往采用模糊查询进行数据的搜索,而模糊查询会导致查询引擎放弃索引,从而导致系统查询数据时都是全表扫描,在百万级别的数据库中查询效率是非常低下的,而我们使用ElasticSearch做一个全文索引,将经常查询的系统功能中的某些字段放入 ElasticSearch索引库里,可以提高查询速度。
2、ElasticSearch 的 master 选举流程是怎样的
ElasticSearch 的选举是 ZenDiscovery 模块负责的,主要包含 Ping (节点之间通过这个 RPC 来发现彼此)和 Unicast (单播模块包含一个主机列表以控制哪些节点需要 ping 通)这两部分
1、对所有可以成为 master 的节点(node.master: true)根据 nodeId 字典排序,每次选举每个节点都把自
己所知道节点排一次序,然后选出第一个(第 0 位)节点,暂且认为它是 master 节点。
2、如果对某个节点的投票数达到一定的值(可以成为 master需要的节点数为: n/2+1 )并且该节点自己也选举自己,如果都符合,那这个节点就是 master ,否则重新选举一直到满足上述条件。
master节点的职责主要包括集群、节点和索引的管理,不负责文档级别的管理,此时master节点可以关闭node.data功能。
elasticsearch(十二)geo
elasticsearch(十一)Highlight、Suggest
一、 Highlight-高亮查询
三种高亮方式
1 | unified:默认的高亮方式,使用Lucene的实现方式 |
elasticsearch(十)相关性得分及分值排序优化
relevance score(相关性得分)
TF/IDF
- TF(term frequency): 关键词在每个doc中出现的次数
- IDF(inverse doc frequency): 关键词在整个索引中出现的次数
计算规则
TF数值大的得分较高,因为关键词在一个文档出现的次数多,证明该文档的相关性更大
IDF数值大的得分较低,关键词在整个倒排索引中出现的次数越多,关联的文档越多,证明其相关越低
relevance score(相关性得分):每个query的分数,乘以matched query数量,除以总query数量
- 它会执行 should 语句中的两个查询。
- 两个查询的评分相加。
- 乘以匹配语句的总数。
- 除以所有语句总数
elasticsearch(九)常用CRUD操作汇总
一、Rest风格的操作
ElasticSearch是基于Rest风格的操作,而Rest风格是一种软件架构风格,而不是标准,它只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
method | url地址 | 描述 |
---|---|---|
PUT | ip:9200/索引名称/类型名称/文档id | 创建文档(指定文档id) |
POST | ip:9200/索引名称/类型名称 | 创建文档(随机文档id) |
POST | ip:9200/索引名称/类型名称/文档id/_update | 修改文档(过时) |
POST | ip:9200/索引名称/_update/文档id | 修改文档 |
DELETE | ip:9200/索引名称/类型名称/文档id | 删除文档 |
GET | ip:9200/索引名称/类型名称/文档id | 通过文档id查询文档 |
POST | ip:9200/索引名称/类型名称/_search | 查询所有数据 |