该测试获得的结果(列表9),和直接通过亚马逊REST API获得的结果相同。 SearchResults ] 第二次测试(列表10)用来验证文档的添加和删除。 public class DocumentAPITester extends TestCase { private static final String DocumentURL = "doc-imdb-movies-ab4fpqw4eocczpgsnrtlu4rn7i.us-east- 1.cloudsearch.amazonaws.com"; private CloudSearchDocumentClient client; private BatchType batch; protected void setUp() throws Exception { client = new CloudSearchDocumentClient(DocumentURL); FieldType title = new FieldType(); title.setName("title"); title.setValue("The Seeker: The Dark Is Rising"); FieldType director = new FieldType(); director.setName("director"); director.setValue("Cunningham, David L."); FieldType genrea = new FieldType(); genrea.setName("genre"); genrea.setValue("Adventure"); FieldType genred = new FieldType(); genred.setName("genre"); genred.setValue("Drama"); FieldType genref = new FieldType(); genref.setName("genre"); genref.setValue("Fantasy"); FieldType genret = new FieldType(); genret.setName("genre"); genret.setValue("Thriller"); FieldType actor1 = new FieldType(); actor1.setName("actor"); actor1.setValue("McShane, Ian"); FieldType actor2 = new FieldType(); actor2.setName("actor"); actor2.setValue("Eccleston, Christopher"); FieldType actor3 = new FieldType(); actor3.setName("actor"); actor3.setValue("Conroy, Frances"); FieldType actor4 = new FieldType(); actor4.setName("actor"); actor4.setValue("Conroy, Frances"); FieldType actor5 = new FieldType(); actor5.setName("actor"); actor5.setValue("Ludwig, Alexander"); FieldType actor6 = new FieldType(); actor6.setName("actor"); actor6.setValue("Crewson, Wendy"); FieldType actor7 = new FieldType(); actor7.setName("actor"); actor7.setValue("Warner, Amelia"); FieldType actor8 = new FieldType(); actor8.setName("actor"); actor8.setValue("Cosmo, James"); FieldType actor9 = new FieldType(); actor9.setName("actor"); actor9.setValue("Hickey, John Benjamin"); FieldType actor10 = new FieldType(); actor10.setName("actor"); actor10.setValue("Piddock, Jim"); FieldType actor11 = new FieldType(); actor11.setName("actor"); actor11.setValue("Lockhart, Emma"); AddType add = new AddType(); add.setId("tt0484562"); add.setVersion(1l); add.setLang("en"); add.getField().add(title); add.getField().add(director); add.getField().add(genrea); add.getField().add(genred); add.getField().add(genref); add.getField().add(genret); add.getField().add(actor1); add.getField().add(actor2); add.getField().add(actor3); add.getField().add(actor4); add.getField().add(actor5); add.getField().add(actor6); add.getField().add(actor7); add.getField().add(actor8); add.getField().add(actor9); add.getField().add(actor10); add.getField().add(actor11); DeleteType delete = new DeleteType(); delete.setId("tt0301199"); delete.setVersion(1l); batch = new BatchType(); batch.getAdd().add(add); batch.getDelete().add(delete); } protected void tearDown() { client.close(); } public void testSearch() throws Exception{ try { System.out.println("Test 1 "); ResponseType result = client.index(batch); System.out.println("Status " + result.getStatus() + " Added " + result.getAdds() + " Deleted " + result.getDeletes()); } catch (Exception e) { e.printStackTrace(); } } } Listing 10 Document upload tester 测试也获得了预期的结果(列表11) Status SUCCESS Added 1 Deleted 1 Listing 11 Document upload test results 总结上面这些简单的Java API实现了亚马逊云搜索的功能,显著简化了亚马逊云搜索功能在已有Java应用中的使用,必然会扩大应用的影响范围。 关于作者Boris Lublinsky博士是诺基亚首席架构师,主要从事大数据、SOA、BPM、中间件的实现。在此之前Boris曾经是 Herzum软件公司的首席架构师,为客户设计大规模的SOA系统,曾负责CNA保险公司的企业架构,参与了CNA的系统集成与SOA策略的设计和实现, 构建了应用框架并实现了面向服务的架构。Boris在企业、技术架构,软件工程方面有超过25年的经验。他还是OASIS SOA参考模型技术委员会的活跃会员,也是《Applied SOA:Service-Oriented Architecture and Design Strategies》,一书的共同作者。他还发表了大量架构、编程、大数据、SOA、BPM的相关文章。 查看英文原文:Using AWS Cloud Search |