Elasticsearch性能优化与插件开发指南
1. Elasticsearch查询优化
1.1 查询结构调整
- 使用过滤查询:运用过滤查询引入过滤器,将大部分静态、未分析的字段移至过滤器中,这样便于在后续查询中重复使用这些过滤器。
- 简化主查询:通过上述查询结构的调整,可将
query_string_query改为match query,以满足实际用例需求。
1.2 使用路由
- 原理:若数据支持路由,可考虑使用。相同路由值的数据会存于同一分片,查询特定数据时可避免查询所有分片。
- 示例:存储客户数据时,可用客户标识符作为路由值,使单个客户的数据存于单个分片中。
- 注意事项:并非所有用例都适合使用路由,数据需合理划分以分布于各分片中。
1.3 并行化查询
- 问题分析:若集群中有多个节点,但索引仅由单个分片构成,大索引的查询性能会不佳。增加副本数量并不能解决问题,因为副本只是主分片的拷贝,包含相同数据。
- 解决方案:将索引划分为多个分片,分片数量取决于硬件和部署情况。一般建议数据均匀分布,使各节点负载均衡。例如,有四个Elasticsear