我有3个节点(主节点和2个数据节点)的集群Elasticsearch 6.3.2。我对索引进行请求,结果顺序可以处于三种不同的状态
如果我从kibana提出了一些要求:
请求正文始终不变
{
"from": 0,
"size": 30,
"query": {...},
"sort": [
{"_score": {"order": "desc"}},
{"_script": {
"script": {
"source": "long code = doc[\"test\"].value;
if(code== 0){return 4;}
if(code== 1){return 2;}
if(code== 2){return 1;}
else return code;",
"lang": "painless"
},
"type": "string",
"order": "desc"
}
},
{"test1": {"order": "desc"}},
{"test2": {"order": "asc"}}
]
"highlight": {...}
}
我希望结果顺序始终是恒定的,但并非如此
答案 0 :(得分:1)
这是一个已知问题,是由于bouncing results而发生的,可以通过始终为同一用户使用相同的分片来避免此问题,这可以通过将首选项参数设置为用户的任意字符串来完成。会话ID。正如Elasticsearch官方文档中所建议的那样,我们也避免在生产中使用preference
参数。