Elaticsearch 在查询数据会导致数据查询返回顺序不正确
推测原因:
1. es 查询时, 在大数据量下es评分是基于当前分片的词频进行计算, 指定search_type参数设置基于索引的词频进行计算评分.
searchtype 类型说明:
1. query then fetch(默认的搜索方式) 基于当前分片
2. DFS query then fetch 基于索引
2. es 查询时, 基于当前查询结果进行重新评分排序
在查询之后调用 rescore , 对查询结果进行重新评分, 此处可以进行多次评分.
window_size: 参数是查询在query查询之后基于query的查询结果进行二次查询, 默认值为10
score_mode: 类型说明
total 将原始分数和重新分数查询分数相加。默认。
multiply 将原始分数乘以 rescore 查询分数。对function query重新评分很有用。
avg 平均原始分数和重新评分查询分数。
max 取原始分数和重新分数查询分数的最大值。
min 取原始分数和重新分数查询分数的最小值。
{
"query": {
"match": {
"addr": "xxx"
}
},
"rescore": {
"query": {
"score_mode": "max",
"rescore_query":{
"match_phrase": {
"addr": {
"query":"xxx,
"analyzer": "standard"
}
}
}
},
"window_size": 50
}
}
其它以后补充…