当我一次又一次地运行相同的查询时,为什么从主分片和副本分片中提取文档。因此,我得到了不同的搜索结果。
示例响应 - 1 - 副本 “_shard”:0, “_node”:“node_1”, “_index”:“sample_ind”, “_type”:“my_type”, “_id”:“E1”, “_score”:2.9560382,
Response-2 Primary shard
"_shard": 0,
"_node": "node_2",
"_index": "sample_ind",
"_type": "my_type",
"_id": "E2",
"_score": 2.956294,
node-1具有副本分片,而node-2具有主分片。当我多次运行相同的查询时,查询获取的工作原理以及响应来自主分片和副本分片的原因是什么?
答案 0 :(得分:1)
很难说,您可以给我更详细的结果吗?
Elastic的网站包含一篇很好的文章,了解如何从主/副本分片中查询获取结果:https://www.elastic.co/guide/en/elasticsearch/guide/current/_query_phase.html
H个,
答案 1 :(得分:1)
这是Elasticsearch的基本信息,我强烈建议您阅读文档,至少掌握有关Elasticsearch的基本知识。
简而言之,当查询到达群集时,需要查询的分片可以是原色或副本。没关系,它们中包含相同的数据,可以平等地执行查询。我不建议仅针对初选或仅复制副本来运行查询,因为它会在群集中创建热点并可能会破坏群集的稳定性。
此外,原色和复制品的得分应该几乎相同。计算得分的算法的一部分涉及碎片中存在多少文档以及这些文档中术语的频率。棘手的部分是,当您更新或删除文档时,该文档不会立即从磁盘中删除,它只会标记为删除。在后台,Elasticsearch合并了分片文件,并采用较小的,相似的大小段,并创建一个更大的段并删除较小的段。在合并时,标记为已删除的文档实际上已从索引中删除。
在此之前,这些文件不会在搜索中返回,但在计算上述分数时会考虑这些文件。