嘿~ 今天天气不错嘛

相同的查询条件,idf却不同(没有写入只有查询)

Elasticsearch | 作者 code4j | 发布于2018年05月30日 | 阅读数:1813

前言: 搜索商品,搜索条件的 term frequency和norms 已经禁用了,只有 idf ,也就是说得分只受包含搜索词的总文档数影响。索引写入已经关闭了,线上排查问题的时候只有查询。
 
现象:搜索 ‘维修’这个词,多次搜索跑排序结果不同。
 
排查结论:通过explain分析发现,两次的idf是不一样的,多次查询的idf在两个值之间变。
 
结果截图:
 

1A6C1BF4-3917-4e44-9D28-7491635696F8.png

 

F9AC0416-FD41-45c0-B8EE-AD1F482C7CA3.png

 
 
两个结果的maxDocs确实不一样,但是确实没有写入来了,因为如果还有写入,那后面几次测试结果不应该在这两个值之间来回变,而是maxDocs应该一直增长才对。
 
 
最后,贴一下索引的查询条件:
 
{
"from" : 0,
"size" : 1000,
"query" : {
"filtered" : {
"query" : {
"bool" : {
"must" : {
"match" : {
"queryStr" : {
"query" : "维修",
"type" : "boolean",
"analyzer" : "ik_smart",
"minimum_should_match" : "100%"
}
}
},
"should" : {
"term" : {
"providertype" : {
"value" : 3,
"boost" : 100.0
}
}
}
}
},
"filter" : {
"bool" : {
"filter" : [ {
"term" : {
"type" : 0
}
}, {
"term" : {
"cityId" : 1
}
}, {
"terms" : {
"backCateIds" : [ 32, 33, 31 ]
}
} ]
}
}
}
},
"sort" : [ {
"_score" : {
"order" : "desc",
"missing" : "_last",
"mode" : "MIN"
}
}]
}

 
求大神帮忙排查
已邀请:

要回复问题请先登录注册