【问题标题】:serialize query from Nest client elastic search 2.3从 Nest 客户端弹性搜索 2.3 序列化查询
【发布时间】:2016-08-01 19:03:20
【问题描述】:

自从将我的 Nest 客户端升级到 2.2.1 后,我无法看到我提交给弹性搜索客户端(现在是 2.3.0 版)的查询。 我曾经使用这一行:

string searchJson = Encoding.UTF8.GetString(client.Serializer.Serialize(myQueryHere));  

但是这个方法现在返回 void 而不是它以前的 JSON。 ConnectionStatus 也不存在,所以我再也看不到我正在发送的 json,有人知道方法吗? CallDetails.RequestBodyInBytes 可用,但返回 null。

【问题讨论】:

    标签: elasticsearch nest


    【解决方案1】:

    Take a look at the documentation for NEST 2.x on Connecting。 CallDetails.RequestBodyInBytes 将是 null 除非您在 ConnectionSettings 上设置了 .DisableDirectStreaming(),该 ConnectionSettings 被传递给 ElasticClient 的构造函数

    var connectionPool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));  
    var settings = new ConnectionSettings(connectionPool) 
        .DisableDirectStreaming();
    
    var client = new ElasticClient(settings);
    

    现在请求和响应字节的副本将在响应 CallDetails 中公开

    var response = client.Search<Document>();
    
    var requestJson = Encoding.UTF8.GetString(response.CallDetails.RequestBodyInBytes);
    var responseJson = Encoding.UTF8.GetString(response.CallDetails.ResponseBodyInBytes);
    

    Whilst developing it may be useful to log out all requests and responses.

    【讨论】:

    • 非常好,非常感谢。 (我试图投票,但我需要 15 分)
    • 没问题。随意投票并接受答案:)
    • 不幸的是,这依赖于我调用 Search 方法来查看我的请求中的内容,在我的原始查询中,我可以看到我要发送的内容而不实际发送它,有没有办法做这个?
    • 是的,将您的请求传递给 client.Serializer.SerializeToString(request); 获取 json 字符串或 client.Serializer.SerializeToBytes(request) 获取字节数组
    • 注意SerializeToString和SerializeToBytes是扩展方法,你需要一个using Elasticsearch.Net;
    【解决方案2】:

    Serialize 方法现在需要流,它将在其上写入原始 json 查询 - 适用于 Nest 5.3.0:

            var stream = new System.IO.MemoryStream();
            nestClient.Serializer.Serialize(query, stream);
            var jsonQuery = System.Text.Encoding.UTF8.GetString(stream.ToArray());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多