elasticsearch 为什么在C#中使用NEST客户端,而不是通过弹性搜索JSON查询直接查询弹性搜索服务器?
我们总是在某种意义上创建弹性搜索查询,然后在嵌套中创建相应的查询版本elasticsearch 为什么在C#中使用NEST客户端,而不是通过弹性搜索JSON查询直接查询弹性搜索服务器?,elasticsearch,nest,elasticsearch,Nest,我们总是在某种意义上创建弹性搜索查询,然后在嵌套中创建相应的查询版本 使用NEST客户端而不是直接将JSON弹性搜索查询放回搜索文档有什么好处?下面列出了您选择使用NEST(弹性搜索的高级客户端)的原因: 使用.NET 4.5、.NET 4.6和.NET标准1.3(及以上版本)进行支持和测试 建模为类型的所有请求和响应 允许将文档建模为普通的旧CLR对象(POCO) 已映射所有Elasticsearch API 使用lambda表达式的强大fluentapi使构建查询变得更加容易。包括无条件查
使用NEST客户端而不是直接将JSON弹性搜索查询放回搜索文档有什么好处?下面列出了您选择使用NEST(弹性搜索的高级客户端)的原因:
- 使用.NET 4.5、.NET 4.6和.NET标准1.3(及以上版本)进行支持和测试
- 建模为类型的所有请求和响应
- 允许将文档建模为普通的旧CLR对象(POCO)
- 已映射所有Elasticsearch API
- 使用lambda表达式的强大fluentapi使构建查询变得更加容易。包括无条件查询等功能
- 如果您喜欢将对象组合在一起,而不是使用fluent API,则可以使用对象初始化器API
- 如果需要使用字符串、字节数组和匿名类型执行请求,则公开低级客户端。允许将请求/响应类型与更多基本类型混合和匹配
- 自动故障切换和重试语义
- 端点有效响应的内在知识,例如,未找到文档的404响应可能仍被视为有效响应
- 长时间运行操作的可观察辅助方法,例如
,BulkAll
,ScrollAll
Reindex
- ,社区的巨大贡献(谢谢!)。包括从源代码构建的文档,以减少源代码漂移,并使其更易于不断改进
- 可插拔组件,例如,
、IConnection
、IRequestPipeline
等IElasticsearchSerializer
- 使用.NET 4.5、.NET 4.6和.NET标准1.3(及以上版本)进行支持和测试
- 建模为类型的所有请求和响应
- 允许将文档建模为普通的旧CLR对象(POCO)
- 已映射所有Elasticsearch API
- 使用lambda表达式的强大fluentapi使构建查询变得更加容易。包括无条件查询等功能
- 如果您喜欢将对象组合在一起,而不是使用fluent API,则可以使用对象初始化器API
- 如果需要使用字符串、字节数组和匿名类型执行请求,则公开低级客户端。允许将请求/响应类型与更多基本类型混合和匹配
- 自动故障切换和重试语义
- 端点有效响应的内在知识,例如,未找到文档的404响应可能仍被视为有效响应
- 长时间运行操作的可观察辅助方法,例如
,BulkAll
,ScrollAll
Reindex
- ,社区的巨大贡献(谢谢!)。包括从源代码构建的文档,以减少源代码漂移,并使其更易于不断改进
- 可插拔组件,例如,
、IConnection
、IRequestPipeline
等IElasticsearchSerializer
资料来源:我最近写了一篇关于这一点的博客,在上,使用像NEST这样的强类型库有两个主要原因 1。它可以防止您尝试大多数无效请求 DSL一开始会觉得很麻烦,但一旦你习惯了它,你就会意识到它的严格结构会阻止你以一种无效的方式将过滤器和聚合链接在一起。这意味着在编写代码并准备修复代码时可以捕获错误…而不是在以后的生产中 #2为像Visual Studio这样的IDE提供代码完成所需的一切 就像Kibana帮助您在开发工具中编写Elasticsearch查询一样,您的IDE可以提供语法突出显示和代码完成,从而节省您来回运行文档或Kibana的时间。这在动态构造查询时非常有用 资料来源:我最近在上写了一篇关于这个的博客