我按以下顺序对Elasticsearch结果进行排序:
1.具有匹配tag
的帖子;
1.具有匹配title
的帖子;
1.具有匹配category
的帖子;
1.匹配content
的帖子;
我已经使用function_score
实现了这一点,它根据匹配字段增加分数:
{
function_score: {
query: {
bool: {
should: [
{
match: {
'insightsTag.title': {
query: this.queryString,
boost: 4
}
}
},
{
match: {
title: {
query: this.queryString,
boost: 3
}
}
},
{
match: {
'insightsCategory.title': {
query: this.queryString,
boost: 2
}
}
},
{
match: {
content: {
query: this.queryString
}
}
},
],
must: [typeFilter]
}
},
boost_mode: 'sum'
}
}
如何按日期对每个匹配组进行排序?即显示所有帖子与匹配的标签,按日期排序;然后,显示所有具有匹配标题的帖子,也按日期排序;等等
1条答案
按热度按时间xam8gpfp1#
Tldr
函数查询允许您计算自定义分数。
默认情况下,文档将按其分数排序。但是你可以choose how you want to sort那些文件。
溶液
这将首先按分数排序,然后按日期排序(按时间顺序)