在弹性搜索中,为什么花费的时间会有所不同?
如果在第一次命中时花费的时间很长并且在下一次命中时减少,那也没关系。
所用时间从 80 ms 到 20 ms 并再次增加到 70?
这是示例
**"took": 17,**
"timed_out": false,
"_shards": {
"total": 246,
"successful": 245,
我很困惑,真的不明白 How 和为什么?提前致谢?
在弹性搜索中,为什么花费的时间会有所不同?
如果在第一次命中时花费的时间很长并且在下一次命中时减少,那也没关系。
所用时间从 80 ms 到 20 ms 并再次增加到 70?
这是示例
**"took": 17,**
"timed_out": false,
"_shards": {
"total": 246,
"successful": 245,
我很困惑,真的不明白 How 和为什么?提前致谢?
好吧,在您的情况下,您搜索了 246 个分片,所以要么您有 a) 所有这些分片都在一个节点上,这意味着该节点上可能少于 246 个核心需要为所有这些分片提供服务,或者 b) a具有多个节点的集群。
在这两种情况下,由于不同的搜索查询、不同的网络延迟、其他进程争夺资源(例如 CPU)、缓存命中/未命中、来自集群上其他用户的流量、操作系统内存管理,您将在获得的响应中遇到一些差异,JVM 垃圾收集,......这个列表相当长,这种行为对于分布式系统来说是完全正常的,就像 Elasticsearch 所做的那样。
如果您必须维护系统,请定义一些您想要遵守的 SLA。然后监控那些,只要你低于那个 - 别担心。您可以查看一些选项,例如调整内存、线程池、GC 和缓存设置……列表也相当长,但所有这些都需要您首先对您的系统,也就是 SLA。