繁体   English   中英

从 spring-data-elasticsearch 4.2.1 升级到 4.3.0 后相同文档的不同分数

[英]Different scores for identical documents after upgrading from spring-data-elasticsearch 4.2.1 to 4.3.0

我目前正在升级我的项目的 Spring Boot 版本。 从 2.5 升级到 2.6 后,一些测试开始失败,这些测试处理了 elasticsearch 文档的检索。 我试图只获取得分最高的文档,但是当期望 2 个相同的文档时,只检索到 1 个。

在阅读了这个问题后,我发现问题归结为使用多个分片的 Elasticsearchindex,每个分片都有自己的评分逻辑,并且(可能?)从不同的分片中获取相同的文档,从而导致不同的分数,尽管实际上是相同的。

现在,谁能告诉我为什么在较新的 spring-data-elasticsearch 版本中会发生这种情况,以及是否有设置将其恢复为旧功能?

我已经建立了一个小测试项目来解决这个问题。 如果有人有兴趣自己尝试一下,请随时查看: https ://github.com/Moldavis/elasticsearch-scoring-poc

实际上在春季数据中断更改文档(duh)中找到了我自己的答案。

https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#elasticsearch-migration-guide-4.2-4.3.break-changes

search_type default value
The default value for the search_type in Elasticsearch is query_then_fetch. This now is also set as default value in the Query implementations, it was previously set to dfs_query_then_fetch.

dfs_query_then_fetch 选项查询所有分片的文档和词频,以等于不同分片之间的分数。 默认情况下不再使用它,因此会出现上述问题。

可以通过设置查询的搜索类型来修复它,如下所示:

queryBuilder.withSearchType(SearchType.DFS_QUERY_THEN_FETCH);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM