代码之家  ›  专栏  ›  技术社区  ›  Sahil Sharma

为什么在C#中使用NEST客户端,而不是通过弹性搜索JSON查询直接查询弹性搜索服务器?

  •  1
  • Sahil Sharma  · 技术社区  · 6 年前

    我们总是在某种意义上创建弹性搜索查询,然后在嵌套中创建相应版本的查询。

    使用NEST客户端和不直接使用JSON弹性搜索查询来获取搜索文档有什么好处?

    2 回复  |  直到 6 年前
        1
  •  3
  •   Russ Cam    6 年前

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

    • 支持和测试。净值4.5。净额4.6和。净标准1.3(及以上)
    • 建模为类型的所有请求和响应
    • 允许将文档建模为普通的旧CLR对象(POCO)
    • 映射的所有Elasticsearch API
    • 使用lambda表达式的强大fluent API使构建查询变得更加容易。包括无条件查询等功能。
    • 如果您喜欢将对象组合在一起,而不是使用fluent API,则可以使用对象初始值设定项API
    • 如果需要使用字符串、字节数组和匿名类型执行请求,则公开低级客户端。允许将请求/响应类型与更多基本类型混合和匹配
    • 自动故障切换和重试语义
    • 内在知识 有效的 端点响应(例如,未找到文档的404响应)可能仍然被视为有效响应
    • 用于长时间运行操作的可观察辅助方法,例如。 BulkAll ,则, ScrollAll ,则, Reindex
    • Maintained by Elastic as an official client ,社区做出了巨大贡献(谢谢!)。包括从源代码构建的文档,以减少源代码漂移,并使其更易于不断改进
    • 可插拔组件,例如。 IConnection ,则, IRequestPipeline ,则, IElasticsearchSerializer
        2
  •  1
  •   Joe Zack SW4    5 年前

    使用像NEST这样的强类型库有两个主要原因。

    它可以防止您尝试大多数无效的请求

    DSL一开始可能会觉得很麻烦,但一旦你习惯了它,你就会意识到它的严格结构会阻止你以无效的方式将过滤器和聚合链接在一起。这意味着在编写代码并准备修复时可以捕获错误。。。而且不迟于生产。

    #2为IDE(如Visual Studio)提供代码完成所需的一切

    就像Kibana帮助您在开发工具中编写Elasticsearch查询一样,IDE可以提供语法突出显示和代码完成,从而节省您来回运行文档或Kibana的时间。这在动态构造查询时非常有用。

    资料来源:我最近在 the benefits of using a strongly-typed library like NEST for generating Elasticsearch queries