优化 Elasticsearch (ES) 的查询性能是一个系统工程,通常需要从查询语句编写、索引设计、集群配置以及硬件资源四个维度入手。 以下是详细的优化指南: --- 一、 查询语句层面的优化 (Query DSL) 这是成本最低、见效最快的方法。 1. 多用 Filter Context,少用 Query Context 原理: 子句不计算相关性评分(Score),且结果会被节点缓存(Node Query Cache)。 子句需要计算评分,无法缓存。 做法:对于不需要评分的过滤条件(如状态、时间范围、ID),务必放入 查询的 中。 示例: 2. 避免使用高昂的查询操作 避免前缀通配符:如 。这会导致扫描所有倒排索引。尽量使用 (前缀匹配)。 慎用 Regexp 和 Wildcard:正则和通配符查询非常消耗 CPU。 少用 Script:脚本查询(Painless)通常不能利用索引结构,需要遍历文档。如果必须用,优先使用 并传入参数,或者在写入时预处理数据。 3. 限制返回字段 ( filtering) 如果不需要文档的全部字段,使用 参数指定返回字段,减少网络传输和反序列...