如何查看 NEST.SearchRequest.Type 属性 对我的 ElasticSearch 查询的影响

How can I see the NEST.SearchRequest.Type property's effect on my ElasticSearch Query

我正在尝试使用 NEST SearchRequest 对象在我的 ElasticSearch 索引中查询类型的动态列表。

public object Search(object runTimeData)
{
  var request = new SearchRequest()
    {
      From = 0,
      Size = 10
    };

  request = SetRouting(request, runTimeData);
  request = SetIndices(request, runTimeData);
  request = SetTypes(request, runTimeData);
  request = SetQuery(request, runTimeData);
  ...
  var results = _searchClient.Search<BaseOfAllTypes>(request);
  return results;
}
...
private SearchRequest SetTypes(SearchRequest request, object runTimeData)
{
  request.Types = GetTypesForRuntime(runTimeData);
}

如果我在执行搜索的行上通过调试器调用 System.Text.Encoding.UTF8.GetString(_searchClient.Serializer.Serialize(request)),我在 JSON:

中看不到任何与类型相关的内容
{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "simple_query_string": {
            "query": "my query data here",
            "default_operator": "and"
          }
        }
      ]
    }
  }
}

返回的查询结果就好像类型被正确过滤了一样。 运行 直接通过 elasticsearch-head returns 生成了 JSON 所有类型的结果,所以似乎在请求的序列化中没有看到我真正应该看到的东西看看。

"types" 出现在 HTTP 请求 header 中。您看到的是 HTTP 请求 body。要获取请求 header,请使用

var requestHeader = results.ConnectionStatus.RequestUrl;

您还将获得集群地址和索引名称信息以及类型信息。

注意,这仅在 Search() 操作成功时有效。否则 results 可能是 null 并且此语句将抛出 NPE。