2

我正在尝试为与术语过滤器匹配的文档添加增强功能。基础是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
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
}
'

但是,当使用过滤查询时,提升是有效的。但由于我系统的限制,我无法使用过滤查询。那么有什么方法可以使原始查询中的提升起作用吗?

4

1 回答 1

2

在查询的过滤器部分,提升将不起作用,因为过滤器的唯一工作是过滤匹配某些值的查询。改为尝试:

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
            }
          }
        }
      ]
    }
  }
}
'

...将两个术语查询直接移动到顶级 bool 查询中的 should 子句中。

于 2017-01-31T15:25:31.410 回答