AWS云搜索的使用:极简Java API
当前,许多应用重度依赖于搜索功能。从电子商务网站中寻找合适的产品,到社交网络中搜索寻人,再到地图网站中寻找POI和地址,依赖于搜索的应用非常广泛。
亚马逊新推出的云搜索服务,为自行实现搜索功能或定制安装Apache Lucene、Apache Solr和elasticsearch等流行产品提供了可行的替代方式。他们这样描述该服务:“它是一个完全托管的云搜索服务,该服务允许用户十分方便地在应用中集成快速且高度可扩展的搜索功能。【它】让用户摆脱了运营和扩展搜索平台的负担。用户不用再去关心硬件配置、数据分区和软件补丁的问题了。”
这个实现方式中,我们发现的唯一缺点是缺乏用于上传数据和实现搜索的Java API。虽然亚马逊提供的REST API也能达到上述的目的,但是在Java代码中使用它们并不方便。为了简化搜索调用和数据上传功能,我们开发了一些简单的Java API,将在本文中逐一介绍。
数据定义
尽管亚马逊提供了数据上传和搜索响应的数据定义(以XML和JSON两种方式),但数据上传的文档中仅定义了Relax NG模式,而搜索响应则未定义任何模式。
在我们的实现方式中,我们决定使用XML数据格式而不是JSON,这是因为进行XML 数据封装更加简单——XML使用规范的数据格式,而JSON则是动态的(JSON的标签是动态定义,每个请求各异)。我们分别用下边的两种模式(列表1和列表2)来上传数据和搜索结果。
………………………………………………………………………………………….