elasticsearch Elasticsearch全文查询有时会花费太多时间
基本配置:
elasticsearch Elasticsearch全文查询有时会花费太多时间,
elasticsearch,full-text-search,
elasticsearch,Full Text Search,基本配置: 集群:两个节点作为主节点和数据节点 es版本:7.2.0 jvm堆大小:每个节点31GB 节点内存:每个节点256GB 主/副本碎片:1/1 磁盘:每个节点2TB以上 部署模式:docker 主机系统:Debian8 部署和配置: 索引映射: 索引文件:11k 附言: 专栏问题是中文单词 已启用搜索慢速日志 “index.search.slowlog.level”:“debug”, “index.search.slowlog.threshold.fetch.debug”:“
- 集群:两个节点作为主节点和数据节点
- es版本:7.2.0
- jvm堆大小:每个节点31GB
- 节点内存:每个节点256GB
- 主/副本碎片:1/1
- 磁盘:每个节点2TB以上
- 部署模式:docker
- 主机系统:Debian8
- 部署和配置:
- 索引映射:
- 索引文件:11k
- 附言:
- 专栏问题是中文单词
- 已启用搜索慢速日志 “index.search.slowlog.level”:“debug”, “index.search.slowlog.threshold.fetch.debug”:“5ms”, “index.search.slowlog.threshold.query.debug”:“1ms”
- 没有高并行查询
POST /index_name/_search
{
"from": 0,
"size": 50,
"query": {
"match": {
"question": text
}
}
}
问题:
大多数查询花费的时间小于20毫秒,偶尔,“take”字段的长度从100ms、200ms到900毫秒不等
分析:
1.kibana监控显示没有高索引率,没有长GC时间,没有高系统负载,没有两个多段,甚至没有高搜索和查询延迟;
2.search\u slow\u log显示没有花费很长时间的查询,profile API在\u nano中显示非常小的查询时间
非常感谢您的建议有一篇很棒的文章 在你的情况下,我建议你考虑以下几点。首先,如果可能,请使用SSD磁盘 第二,尝试设置为,比如说,10秒或更长。当您在后台编制索引和删除文档时,这可能会有所帮助。刷新间隔越大,更新频率越低的索引段的文件系统缓存就会失效 我还建议大家也来看看
希望有帮助 请问您的查询是否相同,或者每次都不同(文本是否发生变化)?
的时间变化有什么规律吗?类似的查询会发生这种情况吗?另外,你使用SSD还是旋转磁盘?@Nikolay Vasiliev谢谢你的回复。不同的查询文本之间没有共同的特征或模式,这需要很长时间。我使用的是HDD而不是ssd,但由于文档大小非常小,可能所有文档都可以加载到内存中,因为根据磁盘监控组件,存在非常少量的磁盘读取操作。您是否也在后台为新文档编制索引,或者索引没有更改(始终具有相同的固定文档集)?@Nikolay Vasiliev添加和删除文档是在后台运行的,这个过程会影响搜索时间吗,或者这个过程会如何影响搜索时间。添加、删除或更新文档会使Elasticsearch的缓存失效,它也非常依赖文件系统缓存。我现在将发布一个答案,并提供一些如何调整搜索速度的技巧。
{
"mapping": {
"properties": {
"question": {
"type": "text"
},
"update_time": {
"type": "date"
}
}
}
}
POST /index_name/_search
{
"from": 0,
"size": 50,
"query": {
"match": {
"question": text
}
}
}