elasticsearch Elasticsearch全文查询有时会花费太多时间,elasticsearch,full-text-search,elasticsearch,Full Text Search" /> elasticsearch Elasticsearch全文查询有时会花费太多时间,elasticsearch,full-text-search,elasticsearch,Full Text Search" />

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
            }
        }
    }