Elasticsearch提高了查询性能

 奇客设计 发布于 2023-01-19 16:52

我正在尝试提高查询性能.对于甚至没有触及嵌套文档的简单查询,平均需要大约3秒,并且有时更长.

curl "http://searchbox:9200/global/user/_search?n=0&sort=influence:asc&q=user.name:Bill%20Smith"

即使没有那种,也需要几秒钟.以下是群集的详细信息:

1.4TB index size.
210m documents that aren't nested (About 10kb each)
500m documents in total. (nested documents are small: 2-5 fields).
About 128 segments per node.
3 nodes, m2.4xlarge (-Xmx set to 40g, machine memory is 60g)
3 shards.
Index is on amazon EBS volumes.
Replication 0 (have tried replication 2 with only little improvement)

我没有看到任何明显的CPU /内存等峰值.任何想法如何改进?

1 个回答
  • Garry关于堆空间的观点是正确的,但这可能不是堆空间问题.

    使用当前配置,对于1.5 TB索引,您可以使用少于60 GB的页面缓存.如果页面缓存中的索引少于4.2%,那么在大多数搜索中,您很可能需要访问磁盘.

    您可能希望为群集添加更多内存,并且您还需要仔细考虑分片数量.坚持默认会导致分布不均匀.如果你在这种情况下有五个分片,你就有两台机器,每台40%的数据,第三台机器只有20%.在任何一种情况下,在进行分布式搜索时,您将始终等待最慢的机器或磁盘.关于Elasticsearch in Production的这篇文章在确定适当的内存量方面有了更多的深入.

    对于这个确切的搜索示例,您可以使用过滤器.您正在排序,因此忽略了查询计算的分数.使用过滤器,它将在第一次运行后进行缓存,后续搜索将很快.

    2023-01-19 16:55 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有