elasticsearch5.0 搜索速度和data节点的磁盘性能相关

本文分享了ES集群配置变化对搜索性能的影响案例。通过调整节点角色、存储介质及优化资源使用情况,如磁盘利用率和CPU负载,显著提升了搜索速度。揭示了搜索性能与磁盘类型密切相关,而内存大小的影响相对较小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

es搜索速度取决于data节点,和master节点没关系。

集群有4个节点:111(md),211(md),166(d),61(m)。括号里是节点可扮演的角色, m表示master, d表示data

data目录都是指向系统盘,而系统盘都是ssd

这个配置搜索速度很快, 1s内就响应了。

后来数据越来越多,有的节点磁盘爆满了,占100%,导致很多分片shard unassigned了。

为了解决磁盘满的问题,就把211166data挂载到了61200g的高效云盘。然后也把61添加进来作为data节点,data的存储位置也是高效云盘。

即节点变为: 111(md),211(md),166(d),61(md)

这样磁盘占用率降下来了,但是搜索速度突然很慢了,可能78秒甚至更迟才响应。


后来111211166分别购买了100gssd, data目录均移到了新购买的ssd盘。然后再弃用61节点。

搜索速度立马又飞快起来了。


另外这也说明搜索速度和磁盘关系很大,和内存关系不大。

因为211166均是48g的系统,top查看es数据在每个节点均占用了20g的内存。


*********

es搜索速度和cpu内存的配置也有关系,但是要求并不是很高,4核8g的配置就够用了,只要保证cpu没被占满即可。

之前的配置是: 111(md),211(md),166(d),61(md),其中1111632g的机器。

配置改为211(md),166(d),35(md)(3个都是48g的机器),搜索速度一点没变慢。


这个配置在第二天突然变慢甚至无响应了。

最后查出来是因为35的机器放了rds, mysql查询未对where语句的字段建index,导致几乎占满了cpu。

补建索引后,cpu降下来,es的搜索速度又飞快了。


### Spring Data Elasticsearch 5.0 使用指南及问题解决 Spring Data Elasticsearch 是 Spring Data 系列中的一个重要模块,用于简化 Elasticsearch 的交互。然而,在使用 Spring Data Elasticsearch 时,尤其是在特定版本如 5.x 中,可能会遇到一些兼容性配置问题。以下是关于 Spring Data Elasticsearch 5.0 的使用指南常见问题的解决方案。 #### 1. 版本兼容性问题 当在项目中同时使用 Spring Data JPA Spring Data Elasticsearch 时,可能会出现版本冲突问题。这是因为 Spring Data Commons 的版本可能不兼容 Elasticsearch 客户端版本[^1]。为了解决此问题,可以手动调整依赖版本或直接使用 Elasticsearch 官方客户端操作 Elasticsearch 5.x。 ```xml <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.6.3</version> </dependency> ``` #### 2. Maven 配置 为了确保项目的稳定性,建议明确指定依赖版本以避免潜在的冲突。以下是一个典型的 Maven 配置示例: ```xml <dependencies> <!-- Spring Data Elasticsearch --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-elasticsearch</artifactId> <version>5.0.0</version> </dependency> <!-- Elasticsearch Transport Client --> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.6.3</version> </dependency> <!-- 其他依赖 --> </dependencies> ``` #### 3. 配置文件 在 `application.yml` 或 `application.properties` 文件中配置 Elasticsearch 连接信息是必要的。以下是一个示例配置: ```yaml spring: data: elasticsearch: cluster-nodes: localhost:9300 cluster-name: elasticsearch ``` 如果需要更复杂的配置,例如设置多个节点或启用 SSL,则需要进一步扩展配置[^2]。 #### 4. 实体类索引映射 创建实体类并定义索引映射是使用 Spring Data Elasticsearch 的关键步骤之一。以下是一个简单的实体类示例: ```java import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType; @Document(indexName = "example", type = "_doc") public class ExampleEntity { @Id private String id; @Field(type = FieldType.Text) private String name; // Getters and Setters } ``` #### 5. 基本操作 Spring Data Elasticsearch 提供了丰富的接口来执行增删改查操作。例如,通过继承 `ElasticsearchRepository` 接口可以轻松实现 CRUD 功能: ```java import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; public interface ExampleRepository extends ElasticsearchRepository<ExampleEntity, String> { } ``` #### 6. 搜索功能 Spring Data Elasticsearch 支持多种搜索方式,包括全文搜索、分页查询等。以下是一个简单的搜索示例: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class ExampleService { @Autowired private ExampleRepository exampleRepository; public List<ExampleEntity> searchByName(String name) { return exampleRepository.search(name); } } ``` #### 7. Kibana 集成 Kibana 是一个强大的工具,用于可视化 Elasticsearch 数据。通过配置 Kibana,可以方便地查看分析数据。以下是 Kibana 的基本配置示例[^3]: ```yaml server.port: 5601 elasticsearch.hosts: ["http://localhost:9200"] kibana.index: ".kibana" i18n.locale: "zh-CN" ``` 启动 Kibana 后,可以通过浏览器访问 `http://localhost:5601` 来查看分析数据。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值