Elasticsearch:计算一个术语在每个文档中出现的频率

Elasticsearch: Count how often a term is in each document

对于条目,我可以使用术语向量 api 轻松找出特定术语的使用频率。

现在我想知道一个术语在我的索引的每个文档中出现的频率。

term    | ID1 | ID2 | ID3 | ID4  [...]
'hello' |  2  |  4  |  0  |  12  [...]

除了搜索我的术语并为每个结果调用 termvector 之外,是否有better/more 有效的方法来获取此统计信息?

您可以使用脚本来实现这一点。 遵循文档 here and here。 在 scripted field 上也有一个好主意,它可以帮助您在每个文档中获得额外的字段。

示例查询 -

{
  "query": {
    "match": {
      "provider": "qbox"
    }
  },
  "script_fields": {
    "test1": {
      "script": "_index['provider']['qbox'].tf()"
    }
  }
}

其中 provider 是字段,qbox 是值。