我在Elasticsearch 7.1索引中有超过3300万条记录,当我查询它时,我将结果大小限制为20。然而,ES仍然在内部对记录进行评分。但这对我来说并不重要,事实上,我想要任何20个结果。所以,例如我不在乎一些结果是否更相关。我的问题是,有没有办法关闭这种行为,如果有,它会提高性能吗?
acruukt91#
您可以使用_doc作为排序字段。这将使ES返回按插入顺序排序的字段,因此它不会进行评分。以下是论坛上的一个帖子,解释了更多:https://discuss.elastic.co/t/most-efficient-way-to-query-without-a-score/57457/4
_doc
wko9yo5t2#
从Elasticsearch文档的Sort search results部分(从8.8开始):_doc除了是最有效的排序顺序之外,没有真实的的用例。因此,如果您不关心文档返回的顺序,那么您应该按_doc排序。这在滚动时尤其有用。
GET /myindex/_search { "size": 1000, "track_total_hits": false, "query": {...}, "sort": ["_doc"] # <------- THIS. }
字符串您应该在结果中看到max_score和_score字段为null。
max_score
_score
null
2条答案
按热度按时间acruukt91#
您可以使用
_doc
作为排序字段。这将使ES返回按插入顺序排序的字段,因此它不会进行评分。以下是论坛上的一个帖子,解释了更多:https://discuss.elastic.co/t/most-efficient-way-to-query-without-a-score/57457/4
wko9yo5t2#
从Elasticsearch文档的Sort search results部分(从8.8开始):
_doc
除了是最有效的排序顺序之外,没有真实的的用例。因此,如果您不关心文档返回的顺序,那么您应该按_doc
排序。这在滚动时尤其有用。字符串
您应该在结果中看到
max_score
和_score
字段为null
。