我创建了一个带有单个分片和1个副本的索引。我正在运行ElasticSearch版本1.0.1,群集有3个节点。
我注意到,对于具有相同分数的文档,偶尔会对结果进行排序 根据是否针对主要副本和副本运行相同的查询而有所不同。 该查询是匹配查询。
例如,当针对主要运行时,结果为:
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 9.058382,
"hits": [
{
"_index": "testdocs",
"_type": "testdocs",
"_id": "132898",
"_score": 9.058382
},
{
"_index": "testdocs",
"_type": "testdocs",
"_id": "132888",
"_score": 9.058382
}
]
}
}
对副本运行时:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 9.058382,
"hits": [
{
"_index": "testdocs",
"_type": "testdocs",
"_id": "132888",
"_score": 9.058382
},
{
"_index": "testdocs",
"_type": "testdocs",
"_id": "132898",
"_score": 9.058382
}
]
}
}
不是上面结果顺序中“_id”的变化。
我无法用一部分文件复制它。我相信当副本中的段数与主要段中的段数不同时,似乎会发生这种情况。 在上面的案例中,副本在主要版本中有21对28。但是两者都有相同数量的文档,因此数据是一致的。
我的问题是,这是预期的行为,即具有相同分数ES的文档不提供默认排序示例:按_id排序? 唯一的方法是通过_score和_id对结果进行显式排序,或者是否有其他一些我缺失的设置。