我试图为与术语过滤器匹配的文档添加提升功能。基础是 布尔/ 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
}
}
}
]
}
}
]
}
}
}
'
但是,使用 过滤 查询时,增强功能正常。但由于我的系统的限制,我不能使用过滤查询。那么有什么方法可以在原始查询中进行提升吗?
答案 0 :(得分:1)
在查询的过滤器部分,提升将不起作用,因为过滤器只有作业是,ehhm,过滤与特定值匹配的查询。请尝试改为:
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。