当前位置: 首页 > 面试题库 >

如何调试Nest查询?

楚志强
2023-03-14
问题内容

我是Nest的新手,我很可能不会像我想的那样创建查询。我的问题更多是教一个人钓鱼而不是给我一条鱼。但是,我将以当前问题为例。

我在ElasticSearch中有几个类型的文档Series。我将在下面不使用属性和公共修饰符来进行存根,只包含与查询有关的信息:

class Series
{
    string Id {get; set;}
    DateTime StartDate {get; set;}
    DateTime EndDate {get; set;}
    HashSet<Role> ReleasableTo {get; set;}
}

这些都很好,花花公子。我可以Get()一个Series对象没有问题。我遇到的问题是试图弄清楚Nest如何格式化查询。我的近期目标是要找到最近的Series是释放到Role.Visitor。我像这样设置Nest查询:

ISearchResponse<Series> response = client
    .Search<Series>(r => 
         r.Filter(f => 
             f.Term<Role>(t=>t.ReleasableTo.First(), Role.Visitor))
    .SortDescending(ser => ser.EndDate).Size(1));

在我看来,这应该产生一个查询,以过滤Series,因此它只考虑属于ReleasableTomy
的查询Role.Visitor,并按结束日期进行反向排序,并将结果限制为返回的一个。那正是我想要的。在针对Series的数千条记录中,约90%符合此配置文件。不幸的是,查询返回0个结果。没有错误,只有结果。我不知道的是我是否使用了错误的API,Nest正在生成没有意义的查询结构,还是我对ElasticSearch不够了解。当我删除该Filter子句时,我得到一个结果,但是我不能保证每个人都可以看到它。

如何查看Nest生成并发送给ElasticSearch的JSON?


问题答案:

您可以通过以下方式获取搜索请求URL和JSON请求正文的值:

var requestURL = response.RequestInformation.RequestUrl;
var jsonBody = Encoding.UTF8.GetString(response.RequestInformation.Request);

您可以在中找到其他有用的属性RequestInformation进行调试。



 类似资料:
  • 问题内容: 我写了一堆查询来进行elasticsearch,我想为它们写一个单元测试。使用此后最小的量,可以进行弹性连接,从而可以进行一般的模拟。但是,当我尝试查看由查询生成的Json时,我没有设法以任何方式获取它。我试图按照这个帖子elsatic查询起订量,但它是只与旧版本的巢的,因为该方法并不再为对象。 我的测试如下: 还有其他方法可以实现我的要求吗? 问题答案: 最好的方法是使用捕获请求字节

  • 问题内容: 我正在尝试模仿我在C#中使用NEST在Sense(chrome插件)中编写的查询。我不知道这两个查询之间的区别是什么。Sense查询返回记录,而nest查询则不。查询如下: 和 这两个查询有什么区别?为什么一个返回记录而另一个不返回? 问题答案: 您可以通过以下代码找出NEST使用的查询: 然后,您可以比较输出。

  • 问题内容: 在转向PDO之前,我通过连接字符串在PHP中创建了SQL查询。如果遇到数据库语法错误,则可以回显最终的SQL查询字符串,然后在数据库中自己尝试,然后对其进行调整,直到修复错误,然后将其重新放入代码中。 预先准备的PDO语句更快,更好,更安全,但是有一件令我困扰的事情:当最终查询发送到数据库时,我再也看不到。当我在Apache日志或自定义日志文件中收到有关语法的错误时(我将错误记录在一个

  • 问题内容: 我遇到了ConcurrentModificationException,通过查看它,我看不到它发生的原因。引发异常的区域和所有修改集合的地方都被包围 我试图抓住讨厌的线程,但我能钉钉子(通过在异常中设置断点)是投掷线程拥有监视器,而另一个线程(程序中有两个线程)处于睡眠状态。 我应该如何进行?遇到类似的线程问题时,通常会做什么? 问题答案: 它可能与同步块无关。当您在迭代集合的元素时修

  • 如何调试 在快速开始文档里十分简略的描述了调试过程,本文将详细描述如何调试QAP工程。为了更加方便的调试,请安装Chrome浏览器。 进入根目录 cd /path/to/your project 对于还来得及创建工程的开发者,可以使用qap create hello_world命令创建最简单的工程,然后cd ./hello_world。 或者使用qap的示例工程,qap demo --NukeU

  • 问题内容: 在Google上搜索后,我发现Elasticsearch的最大查询条件限制为1024? 它是可配置的吗?如果可以,请提供任何步骤。 谢谢,Sameer 问题答案: 默认值为1024,但是它是可配置的。在elasticsearch配置文件(例如yml文件)中,设置提及的设置:例如。