提升对 Elasticsearch 中的布尔过滤查询没有影响
Boosting has no effect in a Boolean-filtered query in Elasticsearch
我正在尝试为与术语过滤器匹配的文档添加提升。基础是 Boolean/MatchAll 查询。但是我的 Elasticsearch 查询中的提升没有效果。所有结果分数设置为 1:
curl -XPOST localhost:9200/wiki_content/_search?pretty -d '
{
"_source": [
"title"
],
"query": {
"bool": {
"must": [
{
"match_all": {}
}
],
"filter": [
{
"bool": {
"should": [
{
"term": {
"title.keyword": {
"value": "Main Page",
"boost": 9
}
}
},
{
"term": {
"title.keyword": {
"value": "Top Page",
"boost": 999
}
}
}
]
}
}
]
}
}
}
'
但是,当使用 filtered 查询时,提升有效。但是由于我系统的限制,我不能使用过滤查询。那么有什么方法可以使原始查询中的提升起作用吗?
在查询的过滤器部分,提升将不起作用,因为过滤器的唯一工作是,嗯,过滤匹配特定值的查询。请尝试:
curl -XPOST localhost:9200/wiki_content/_search?pretty -d '
{
"_source": [
"title"
],
"query": {
"bool": {
"must": [
{
"match_all": {}
}
],
"should": [
{
"term": {
"title.keyword": {
"value": "Main Page",
"boost": 9
}
}
},
{
"term": {
"title.keyword": {
"value": "Top Page",
"boost": 999
}
}
}
]
}
}
}
'
...将两个 term-queries 直接移动到顶级 bool 查询中的 should-clause 中。
我正在尝试为与术语过滤器匹配的文档添加提升。基础是 Boolean/MatchAll 查询。但是我的 Elasticsearch 查询中的提升没有效果。所有结果分数设置为 1:
curl -XPOST localhost:9200/wiki_content/_search?pretty -d '
{
"_source": [
"title"
],
"query": {
"bool": {
"must": [
{
"match_all": {}
}
],
"filter": [
{
"bool": {
"should": [
{
"term": {
"title.keyword": {
"value": "Main Page",
"boost": 9
}
}
},
{
"term": {
"title.keyword": {
"value": "Top Page",
"boost": 999
}
}
}
]
}
}
]
}
}
}
'
但是,当使用 filtered 查询时,提升有效。但是由于我系统的限制,我不能使用过滤查询。那么有什么方法可以使原始查询中的提升起作用吗?
在查询的过滤器部分,提升将不起作用,因为过滤器的唯一工作是,嗯,过滤匹配特定值的查询。请尝试:
curl -XPOST localhost:9200/wiki_content/_search?pretty -d '
{
"_source": [
"title"
],
"query": {
"bool": {
"must": [
{
"match_all": {}
}
],
"should": [
{
"term": {
"title.keyword": {
"value": "Main Page",
"boost": 9
}
}
},
{
"term": {
"title.keyword": {
"value": "Top Page",
"boost": 999
}
}
}
]
}
}
}
'
...将两个 term-queries 直接移动到顶级 bool 查询中的 should-clause 中。