在Elasticsearch中提升

Bla*_*POP 5 elasticsearch

我是elasticsearch的新手.在elasticsearch中,我们几乎可以在所有查询中使用术语boost.我知道它用于修改文档的分数.但我无法找到它的实际用途.我怀疑的是,如果我在某些查询中使用提升值,它是否会影响搜索的最终得分或索引本身中文档的提升等级.

在索引的提升和查询的提升之间的主要区别是什么?

提前致谢..!

DrT*_*ech 12

查询时间提升允许您为一个查询赋予更多权重而不是另一个查询.例如,假设您正在查询"Quick Brown Fox"的字段titlebody字段,您可以将其写为:

{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "title": "Quick Brown Fox"
          }
        },
        {
          "match": {
            "body": "Quick Brown Fox"
          }
        }
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是您决定要让title字段比body字段更重要,这意味着您需要通过(例如)2 boosttitle字段进行查询:

{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "title": {
              "query": "Quick Brown Fox",
              "boost": 2
            }
          }
        },
        {
          "match": {
            "body": "Quick Brown Fox"
          }
        }
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

(注意如何match更改子句的结构以适应boost参数).

boost2不加倍_score准确-分数经过标准化处理.所以,你应该想到的boost使这个查询子句相对比其他查询子句更重要.

我怀疑是否在某些查询中使用了boost值.它会影响搜索的最终得分吗?

是的,但你不应该依赖于实际的价值_score.其唯一目的是允许Elasticsearch确定哪些文档与此查询最相关.如果查询更改,则分数会更改.

重新启动索引时间:不要使用它.它不灵活,容易出错.