当我一次又一次地运行相同的查询时,为什么要从主分片和副本分片中获取文档。正因为如此,我得到了不同的搜索结果。
示例响应-1- Replica "_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有主分片。当我多次运行相同的查询时,查询fetch是如何工作的,为什么响应来自主分片和副本分片?
发布于 2016-10-25 20:55:57
很难说,你能给我更多关于你的结果的细节吗?
Elastic的网站上有一篇很好的文章,介绍了如何从主/副本碎片中查询获取结果:https://www.elastic.co/guide/en/elasticsearch/guide/current/_query_phase.html
Hth,
发布于 2016-10-25 21:19:34
这是Elasticsearch的基本信息,我强烈建议阅读文档,至少掌握Elasticsearch的基本知识。
简而言之,当查询到达集群时,需要查询的分片可以是主分片,也可以是副本分片。这并不重要,它们具有相同的数据,并且可以平等地执行查询。我不建议仅针对主服务器或副本服务器运行查询,因为这将在集群中创建热点,并可能破坏集群的稳定性。
此外,初选和复制品的得分应该几乎相同。计算分数的算法部分涉及分片中存在多少个文档以及这些文档中术语的频率。棘手的部分是,当您更新或删除文档时,该文档不会立即从磁盘中删除,而只是标记为删除。在后台,Elasticsearch合并分片文件,取较小的、大小相似的片段,创建较大的片段并删除较小的片段。在合并时,标记为已删除的文档实际上会从索引中删除。
在此之前,这些文档不会在搜索中返回,但如上所述,在计算分数时会考虑这些文档。
https://stackoverflow.com/questions/40239405
复制相似问题