集群情况下,elasticsearch出现前后两次搜索结果不一致的原因是:两次查询并不是同一分片进行处理的。
在我们理解中,同样是4号分片,主分片和副分片数据都是一致。但是当分别用这两个分片去查时,就会发现搜索结果不一致,_score不一样。在官方文档中,提到分片中存在标记为已删除的文档,这些文档只有在下一次旧文档所属的段合并时才会从磁盘中删除。但是出于实际原因,这些已删除的文档会被考虑用于索引统计。因此,假设主分片刚刚完成了一个大型合并,删除了大量已删除的文档,那么它可能具有与副本(仍有大量已删除文档)完全不同的索引统计信息,因此分数也不同。
https://www.elastic.co/guide/en/elasticsearch/reference/current/consistent-scoring.html
处理方法:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-preference.html