索引规划
ES5默认情况下分片数是5,副本数是1。我们知道分片是把一个大的索引分成多份放到不同节点上来加速查询效率,当用户发送一个查询请求,Elasticsearch把请求转发到不同节点上,分别到各个分片上进行搜索,然后把搜索结果合并,返回。分片过少,数据量很大时,索引文件也很大,不能发挥分布式搜索的优点;分片数过多,在分发查询请求、合并搜索结果时会浪费时间。你们应该如何设置?
查询的响应时间受多个变量的影响:
- 服务器的性能:服务器内存大小、CPU性能
- 硬盘:普通硬盘和SSD存在差距
- 文档结构的复杂度:复杂结构的文档需要消耗更多的资源及查询时间
- 查询语句的复杂程度:复杂查询,尤其是嵌套搜索、聚合分析更加耗时
在配置之前,我们可以使用官网提供的单机性能测试方法进行测试。
分布式集群
Elasticsearch集群中的节点一般有3种角色。
- master节点:主要负责元数据的处理,比如索引的新增、删除、分片分配等,每当元数据更新时,master节点负责同步到其他节点上。
- data节点:保存了数据分片,负责数据相关操作,比如分片的增删改查以及搜索和整合操作。
- client节点:起到路由请求的作用,实际上可以看作负载均衡器,适用于高并发访问的业务场景。(如果没有处理高并发访问的需求,可以不添加)
网友评论