Boosting对Elasticsearch中的布尔筛选查询没有影响

时间:2017-01-06 20:03:44

标签: elasticsearch boost filter term boosting

我试图为与术语过滤器匹配的文档添加提升功能。基础是 布尔/ 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
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
}
'

但是,使用 过滤 查询时,增强功能正常。但由于我的系统的限制,我不能使用过滤查询。那么有什么方法可以在原始查询中进行提升吗?

1 个答案:

答案 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。