更新时间: 2023-06-26 09:41:46#得物社区亿级 ES 数据搜索性能调优实践(转)ES 搜索优化, 一般按产品需求,需要 order by createtime desc limit 10 再进行翻页 #方案: 开启索引排序 代价 就是写入会慢点 { "settings": { "index": { "sort.field": "publish_time", // 可指定多个字段 "sort.order": "desc" } }, "mappings": { "properties": { "content_id": { "type": "long" }, "publish_time": { "type": "long" }, ... } } } 针对大结果集的排序取前 N 条的场景下,索引排序能显著提高搜索性能。 索引排序只能在创建索引时指定,不可更改。如果你有多个指定字段排序的场景,可能需要慎重选择排序字段。 不获取总数能更好的利用索引排序。 开启索引排序会一定程度降低写性能。 这里贴一条 ElaticsearchBenchmarks 的数据截图供大家参考。 #优化建议:keyword: 不是所有的数字都应该按照数值字段来存,如果你的数字值很少用于范围查询,但是经常被用作 term 查询,并且对搜索 rt 很敏感。那么 keyword 才是最适合的存储方式。