gpt4 book ai didi

elasticsearch - Elasticsearch索引统计信息与搜索结果不同

转载 作者:行者123 更新时间:2023-12-02 23:59:45 24 4
gpt4 key购买 nike

当使用curl 'http://localhost:9200/_cat/indices?v'检查文档数在我们的Elasticsearch实例中的索引状态时,每个docs.count中的index通常大于在该索引上搜索所有文档时返回的搜索结果数。

有时,它是搜索结果的整数倍,但并非总是如此。在一种情况下,索引中有98160match_all命中,但805383文档。

请注意,映射中没有嵌套的文档。

有什么解释?请注意,搜索似乎确实可以正常运行。

最佳答案

这可能是因为没有replicas将数据分片到多个节点(多节点群集设置)中,并且在执行搜索查询时可能其中一个节点已关闭。

例如,
如果我只有一个节点的集群,并且该节点有1个index4 documents,当我检查indices时,将得到以下输出:

health status index pri rep docs.count docs.deleted store.size pri.store.size 
yellow open blog 5 1 4 0 10.9kb 10.9kb

现在,如果我运行 match_all查询,
{
"query": {
"match_all": {}
}
}

我会得到,
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 4,
"max_score": 1,
"hits": [........

请注意 docs.count如何等于 hits计数。在上面的输出中,观察分片的数量,即 5。所有这些分片都分配给单个节点。

但是,如果我有一个未配置且配置了 replicas 的多节点设置,则这些碎片将分布在多个节点之间。

假设我有一个两节点集群,其节点类型为节点1 节点2 ,共有5个分片,在这5个分片分片0、1,3中,被分配给节点2 ,该节点为停机进行维护或由于任何原因无法使用。在这种情况下,您仅可通过节点1 使用碎片24。现在,如果您尝试检索或搜索数据,将会发生什么? Elasticsearch将为您提供来自尚存节点即节点1 的搜索结果。

在这种情况下,匹配数将始终小于docs.count值。

通过使用 replicas 可以避免这种不确定性

关于elasticsearch - Elasticsearch索引统计信息与搜索结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50109866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com