NEST 7:如何获取每个文档的出现次数?

NEST 7: How to get occurrence number for each document?

我正在使用 NEST 7.0 和 C# 运行 使用 Fluent DSL 样式搜索 Elasticsearch 存储的查询。我使用 MultiMatch 在多个字段中按传递的字符串值进行搜索:

queryContainer &= Query<Document>.MultiMatch(m => m.Fields(fields)
                                                   .Query(searchParams.SearchValue)
                                                   .Type(TextQueryType.MostFields));

对于我收到的每个文档,它都是_score 和源数据。我都可以从 Response.Hits.

得到

但是如何获得每个文档的搜索值的出现次数?我想收到这样的东西:

搜索值:"search"
搜索字段:标题、描述
结果:
- Doc1:出现 5 次
- Doc2:出现 0 次
- Doc3:出现 3 次
- Doc4:出现 1 次
...

在此先感谢您的帮助!

弹性搜索中没有直接的方法。 可以做的最接近的事情是使用 multi-term vectors

查询

POST /index51/_mtermvectors
{
    "ids" : ["1", "2"], --> Ids of all documents (_id)
    "parameters": {
        "fields": [
            "text"
        ],
        "term_statistics": true
    }
}

它将return所有文档的列表,其中包含字段中每个单词的统计信息

结果:

{
  "docs" : [
    {
      "_index" : "index51",
      "_type" : "_doc",
      "_id" : "1",
      "_version" : 2,
      "found" : true,
      "took" : 3,
      "term_vectors" : {
        "text" : {
          "field_statistics" : {
            "sum_doc_freq" : 7,
            "doc_count" : 3,
            "sum_ttf" : 7
          },
          "terms" : {
            "another" : {
              "doc_freq" : 2,
              "ttf" : 2,
              "term_freq" : 1,
              "tokens" : [
                {
                  "position" : 0,
                  "start_offset" : 0,
                  "end_offset" : 7
                }
              ]
            },
            "test" : {
              "doc_freq" : 3,
              "ttf" : 3,
              "term_freq" : 1,
              "tokens" : [
                {
                  "position" : 2,
                  "start_offset" : 16,
                  "end_offset" : 20
                }
              ]
            },
            "twitter" : {
              "doc_freq" : 2,
              "ttf" : 2,
              "term_freq" : 1,
              "tokens" : [
                {
                  "position" : 1,
                  "start_offset" : 8,
                  "end_offset" : 15
                }
              ]
            }
          }
        }
      }
    },
    {
      "_index" : "index51",
      "_type" : "_doc",
      "_id" : "2",
      "_version" : 1,
      "found" : true,
      "took" : 2,
      "term_vectors" : {
        "text" : {
          "field_statistics" : {
            "sum_doc_freq" : 7,
            "doc_count" : 3,
            "sum_ttf" : 7
          },
          "terms" : {
            "test" : {
              "doc_freq" : 3,
              "ttf" : 3,
              "term_freq" : 1,
              "tokens" : [
                {
                  "position" : 0,
                  "start_offset" : 0,
                  "end_offset" : 4
                }
              ]
            }
          }
        }
      }
    }
  ]
}

可以使用 scroll api

获取所有文档的 ID