Elasticsearch > Kotlin > es-kotlin-client 手册(意译)1 – 序言
由于Elasticsearch在后端操作方面的Kotlin版本库非常优秀,我正在进行其功能验证,并同时将其手册翻译成日文并做笔记。
一共有10集。
es-kotlin-client指南(中文意译)1 <- 这里
es-kotlin-client指南(中文意译)2
es-kotlin-client指南(中文意译)3
es-kotlin-client指南(中文意译)4
es-kotlin-client指南(中文意译)5 – 通过乐观锁进行更新
es-kotlin-client指南(中文意译)6 – 搜索
es-kotlin-client指南(中文意译)7 – Kotlin查询DSL
es-kotlin-client指南(中文意译)8 – 异步
es-kotlin-client指南(中文意译)9 – DSLs
es-kotlin-client指南(中文意译)10 – 示例
es-kotlin-client 使用手册
Elasticsearch Kotlin客户端手册
Elasticsearch Kotlin Client 是一个用 Kotlin 编写的客户端库,它适用于 Elasticsearch 提供的高级 Elasticsearch HTTP 客户端,用于 Java。
前言 (节选)
Java 客户端与 REST API 公开的所有功能提供相同,并且 Elasticsearch Kotlin 客户端使得这些功能更适合 Kotlin 的使用。
这是通过添加许多方便的功能和快捷方式来实现的扩展功能。
它添加了用于查询、映射定义和批量索引创建的Kotlin DSL。
为了方便最常见的用例,该库还提供了对存储库的抽象化。
另外,我们还提供了Java库的协程友好的异步客户端版本。用户可以编写完全响应式的代码,如Ktor或Spring Boot。这个库目前是最简单的方法。
起始部分(整篇内容)
这是Elasticsearch Kotlin客户端的手册,旨在为服务器端的Kotlin开发提供一个友好的Kotlin API,建立在Elastic提供的Java客户端之上。
Elastic的HighLevelRestClient是使用Java编写的,它提供了对Elasticsearch公开的REST API的基本访问功能。这个Java API可以访问OSS和x-pack的所有功能。但是,它不是最简单的直接操作方法。
Es的Kotlin客户端并不剥夺这样的能力,而是提供了更多的功能和便利。
Kotlin客户端通过多种方式扩展了Java客户端。它可以使用扩展函数来添加功能,使用生成的代码将内置的异步函数适配到Kotlin的协程中,还可以添加Kotlin领域特定语言(DSL)来进行查询和映射等操作。
根据需要,可以随时使用基本的Java功能。
然而,对于最常用的功能,这个客户端提供了一种适用于Kotlin的方法来访问这些功能。
项目的历史
在Elasticsearch 1.0发布之前,我用Java写了第一个Elasticsearch的客户端。这是我于2012年创办的初创公司的内部项目。我原本打算将其开源,但未能实现。当Elasticsearch 2.0发布时,我尝试修复它,并创建了OSS版本的代码基础。
不过,我们没有能够将我们的代码库升级到2.0版本,所以代码没有完成。
随后,Elasticsearch 5.0以一种相当重要的方式破坏了兼容性,我无法支持它。
另外,由于包含了新的低级Java客户端,使得代码库工作的动力消失了。高级客户端在6.0版本中包含在内。
数年前,我开始使用 Kotlin,并同时将代码库迁移到了 Elasticsearch 的最新版本。
当时 Elastic 已经发布了 RestHighLevel 客户端,所以我试着使用了它,但很快意识到自己错过了之前构建的一些功能。
例如,我曾经拥有处理 Bulk API 复杂性的 Bulk 会话,以及迭代滚动搜索结果的方便方法,还有知道如何序列化和反序列化 JSON 文档的便捷索引存储库等。
最近,我曾经在另一个项目(针对Elasticsearch 5.x)中重新构建了一个用于Java的简单HTTP客户端,所以感觉又做了类似的东西。
所以在2018年,我意识到我希望再次为Kotlin构建这个功能,并决定这次做得更好,并从第一天开始将其变为一个开源项目。
当时,由于同时关闭的创业公司,所以我没有立即可以使用的项目。
然而,当时我作为Elasticsearch专家作为自由职业者活动,所以我有足够的空闲时间来启动项目。
在接下来的几年里,我继续为客户工作,并最终在一些项目中使用了它。
每次使用时,我都想要添加更多功能,使其更方便,也希望找到改进代码基础的方法。
出于对错误的感觉以及对需要支持API的工作的需求,我有意推迟了1.0版本的发布,并致力于做出承诺,以避免自己陷入失败中。
在某一点上,我开始思考要达到1.0版本需要什么,并一一修复这些问题。
我在我的清单中的主要项目是创建包含实际运行示例的文档。
这本手册是努力的成果。
持续下去