elasticsearch - 提高查询或映射中的值

标签 elasticsearch

我可以通过查询发送boost值

{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "title": {
              "query": "quick brown fox",
              "boost": 2 
            }
          }
        }
      ]
    }
  }
}

但我也可以在映射中设置提升值
{
  "properties": {
    "title": {
      "type": "string",
      "boost": 2
    },
    "tags": {
      "type": "string"
    }
  }
}

我的问题是。在执行查询,提升映射或设置查询提升时哪个更快,或者是否同样快。

最佳答案

Elastic自身不建议使用索引时间提升,原因有很多:

  • 将boost与字段长度范数结合起来并存储在一个字节中意味着字段长度范数会失去精度。结果是,Elasticsearch无法区分包含三个单词的字段和包含五个单词的字段。
  • 要更改索引时间提升,您必须重新索引所有文档。另一方面,每次查询都可以更改查询时间的提升。
  • 如果具有索引时间增强的字段具有多个值,则每个值的增强值都将自身相乘,从而显着增加了该字段的权重。

  • 有关更多详细信息,请参见https://www.elastic.co/guide/en/elasticsearch/guide/current/practical-scoring-function.html

    至于速度,我认为它变化不大,因此您可能应该坚持使用Query-time boosting作为标准。

    关于elasticsearch - 提高查询或映射中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31609718/

    相关文章:

    elasticsearch - 从Google Apps脚本查询ElasticSearch?

    elasticsearch - 我应该使用数据库 ID 作为弹性 ID

    python - 提高python Elasticsearch 性能

    java - 如何使用 Elasticsearch 配置 Spring Cloud Zipkin 服务器以实现持久性?

    elasticsearch - 如何过滤应查询的嵌套对象?

    elasticsearch - ELK的规划能力需要考虑哪些因素?

    java - Elasticsearch : Sorting by nested documents' values

    Elasticsearch match_all 仅返回一个结果

    elasticsearch - 我可以配置Logstash使用包含参数化日期的索引吗?

    php - Elasticsearch query_string包含未查询的术语