Performance 弹性搜索中的排序
以下是保存在我的索引中的文档的数据模型:Performance 弹性搜索中的排序,performance,sorting,elasticsearch,Performance,Sorting,elasticsearch,以下是保存在我的索引中的文档的数据模型:{“messageId”:1,“commentId”:1,“likes”:1,“stars”:1,“time”:以毫秒为单位的时间,“category”:1,“deleted”:false,“userid”:1} 每条消息都有多条评论(在我的例子中大约有2000条) 基于messageId路由的索引文档。 我目前有2亿条大小为31GB的记录 碎片数量:5 复制品数量:3 (180总商店规模) 节点数:4。每个节点都有8GB的ram,其中我使用4GB进行e
{“messageId”:1,“commentId”:1,“likes”:1,“stars”:1,“time”:以毫秒为单位的时间,“category”:1,“deleted”:false,“userid”:1}
每条消息都有多条评论(在我的例子中大约有2000条)
基于messageId路由的索引文档。
我目前有2亿条大小为31GB的记录
- 碎片数量:5
- 复制品数量:3 (180总商店规模)
- 节点数:4。每个节点都有8GB的ram,其中我使用4GB进行elasticsearch
messageId
获取commentid
,按喜欢、星星或时间排序
搜索查询:
curl-XGET localhost:9200/\u search?路由=${messageId}&q=messageId:${messageId}&sort=likes:desc&fields=commentId&\u source=false
当我使用1500个线程运行性能测试时,平均花费的时间是6秒,90%大约是20秒!这是客户端的值。响应对象中的take值根据负载的不同从10ms到15s不等
如何提高读取性能?您可能已达到群集的内存限制。您应该启用Java GC日志记录(例如,使用
ES\u USE\u GC\u logging
)并查看是否在GC中花费了大量时间
听起来您的性能测试正在创建大量的同时请求。你可能正在填补你的空缺。看看:
$ curl -XGET "http://localhost:9200/_nodes/stats/thread_pool?pretty"
最后,听起来你有相对较多的碎片。(或)。如果您有
index.number\u的\u副本:3
,则可以设置index.number\u的\u碎片:1
,仍然可以获得完整的群集利用率。群集只有1个索引