我有一个Spring Boot项目,其中org.springframework.boot:spring-boot-starter-data-elasticsearch:jar:2.0.0.RELEASE
连接到elasticsearch-6.3.1
服务器。
我有以下情况:对于一些elasticsearch查询(涉及到应该布尔),与使用curl手动运行查询时得到的分数不同。
我尝试过的步骤:在调用存储库之前,从SearchQuery中使用调试器提取查询,从Elasticsearch日志中提取查询(使用"index.search.slowlog.threshold.fetch.debug" : "0s", "index.search.slowlog.threshold.query.debug" : "0s"
);在这两种情况下,使用curl手动运行查询都会得到一组与Java api给出的分数不同的分数。
我提到我无法通过查看两个得分集之间的差异来找到模式。手动查询返回的分数似乎是正确的分数,因为我希望其中一些分数具有相同的值,而对于api返回的分数则不会发生。
如果您对可能导致此问题的方式或如何继续进行调查有任何想法,将不胜感激。
答案 0 :(得分:0)
我通过用constantScoreQuery包装内部查询,使api返回的分数与手动运行的分数相同,看来TF / IDF标准是“罪魁祸首”。
尽管如此,为什么手动查询首先表现为忽略TF / IDF仍然很奇怪。