弹性搜索提升每个字段与函数分数



我有一个查询,其中包含不同字段和 OR 结果的不同查询数据。我还想偏爱某些字段的命中。理想情况下,这只会提高排名,但不会导致不包含其他字段中某些术语的结果。这会将结果偏向那些具有某些字段的结果。

我认为这曾经被称为提升,但由于 boost 已从 Lucene 中删除,Elasticsearch 已将它们替换为函数分数,我不明白如何将它们添加到我的查询中。

查询如下所示:

POST /index/type/_search
{
    "query": {
        "bool": {
            "should": [{
                "terms": {
                    "field1": ["67", "93", "73", "78", "88", "77"]
                }
            }, {
                "terms": {
                    "field2": ["68", "94", "72", "76", "82", "96", "70", "86", "81", "92", "97", "74", "91", "85"]
                }
            }, {
                "terms": {
                    "category": ["cat2"]
                }
            }]
        }
    }
}

在所有可能的命中中,我想将排名偏向那些来自catagory领域的术语。

删除了

_boost字段(文档级提升),但字段级提升和查询提升仍然可以正常工作。 看起来您正在寻找查询提升。

因此,如果您想在field1上提升比赛:

"bool": {
    "should": [{
        "terms": {
            "field1": ["67", "93", "73", "78", "88", "77"],
            "boost": 2.0
        }
    }, {
        "terms": {
            "field2": ["68", "94", "72", "76", "82", "96", "70", "86", "81", "92", "97", "74", "91", "85"]
        }
    }, {
        "terms": {
            "category": ["cat2"]
        }
    }]
}

相关内容

  • 没有找到相关文章

最新更新