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

为什么要在C#中使用NEST客户端,而不通过elasticsearchJSON查询直接查询elasticsearch服务器?

傅元章
2023-03-14
问题内容

我们始终会在一定程度上创建elasticsearch查询,然后在NEST中创建它的相应版本。

使用NEST客户端而不直接放置JSONelasticsearch查询以获取搜索文档的好处是什么?


问题答案:

以下是您可能选择使用Elasticsearch的高级客户端NEST的原因的详尽列表:

  • 受.NET 4.5,.NET 4.6和.NET Standard 1.3(及更高版本)支持和测试
  • 所有请求和响应均按类型建模
  • 允许将文档建模为普通的旧CLR对象(PO​​CO)
  • 映射了所有Elasticsearch API
  • 使用lambda表达式的强大流畅的API使构建查询变得更加容易。包括无条件查询等功能。
  • 如果希望将对象组合在一起,而不是使用流畅的API,则使用对象初始化器API
  • 如果您需要使用字符串,字节数组,匿名类型执行请求,请公开低级客户端。允许将请求/响应类型与更多原始类型混合和匹配
  • 自动故障转移和重试语义
  • 端点 有效 响应的内在知识,例如未找到文档的404响应,仍可以视为有效响应
  • 对于更长的运行操作如观察到的辅助方法BulkAllScrollAllReindex
  • 由Elastic作为官方客户维护,并得到了社区的巨大贡献(谢谢!)。包括从源代码构建的文档,以减轻源代码的漂移并使其更易于不断改进
  • 插入组件例如IConnectionIRequestPipelineIElasticsearchSerializer等。


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

  • 问题内容: 该站点仅包含JSON文档,而没有Java客户端。我应该执行某种映射吗? 例如地理位置查询:http : //www.elasticsearch.org/guide/reference/query- dsl/geo-distance-range- filter.html 如何使用Java客户端编写这样的查询? 谢谢杰森 问题答案: 不明显但不那么复杂;)

  • 问题内容: 自将我的Nest客户端升级到2.2.1之后,我无法看到要提交给我的elasticsearch客户端(现在为2.3.0版)的查询。我曾经用这条线: 但是,此方法现在返回void而不是它以前使用的JSON。ConnectionStatus也不存在,所以我再也看不到我发送的json了,有人知道吗?CallDetails.RequestBodyInBytes可用,但返回null。 问题答案:

  • 返回的调试信息是 “从POST上的不成功低级调用生成的嵌套响应无效:/_SEARCH\r\n#此API调用的审核跟踪:\r\n-BADResponse:Node:http://127.0.0.1:9200/Take:00:00.2964038\r\n#ServerError:ServerError:500Type:search_phase_execution_exception原因:\”所有碎片失

  • 问题内容: 似乎要合并两个或多个表,我们可以使用join或where。一个相对于另一个的优点是什么? 问题答案: 任何涉及多个表的查询都需要某种形式的关联,以将结果从表“ A”链接到表“ B”。传统的(ANSI-89)方法是: 在FROM子句中列出逗号分隔列表中涉及的表 在WHERE子句中编写表之间的关联 FROM TABLE_A a, TABLE_B b WHERE a.id = b.id 这是

  • 问题内容: 我开始四处寻找搜索引擎,经过一番阅读后,我决定使用ElasticSearch(这是非常了不起的:)),我的项目在C#中,所以我四处寻找客户端并开始使用NEST,一切都很简单,但是我搜索部分有些混乱。 我想搜索 特定类型的 所有字段 ,然后 输入 以下代码: 我看到许多字符串查询搜索已被弃用,并想确保上面的方法是正确的方式(上面未标记为已弃用…)对于一个简单的任务来说也有点长,所以也许有