Elasticsearch:文档得分等于字段中的命中数

Elasticsearch: Having document score equal number of hits in field

我使用 elasticsearch 通过索引搜索通常包含大量文本的字段,我只想知道每个文档的查询匹配次数。任何人都知道这样做的好方法吗?如果可能的话,我想通过分值来做到这一点。例如,如果我在 "the quick brown fox jumped over the lazy fox" 上搜索 "fox",我会得到包含以下内容的内容:

“_分数”:2.0

默认评分模型也将此计入图片,但这并不是唯一的计分方式。 您正在寻找的是术语频率。 默认评分模型基于 TF-IDF(词频和逆文档频率)以及字段长度。 您可以阅读更多相关信息 here

现在回到您的要求,您可以使用 scripting module and function score query

{
  "query": {
    "function_score": {
      "query": {
        "match": {
          "field": "fox"
        }
      },
      "boost_mode": "replace",
      "functions": [
        {
          "script_score": {
            "script": "_index['field']['fox'].tf()"
          }
        }
      ]
    }
  }
}