一 整合
整合代码放在 https://gitee.com/elvinle/jd_pachong.git 中, 并不复杂
elasticsearch 官方推荐使用 rest 方式进行操作.
二 库操作
private static String INDEX_DEFAULT = "elvin";private static String INDEX_JD = "jd_goods";@AutowiredRestHighLevelClient client;//region 索引库操作//创建索引@Testpublic void createIndex() throws Exception { CreateIndexRequest createReq = new CreateIndexRequest(INDEX_DEFAULT); CreateIndexResponse resp = client.indices().create(createReq, RequestOptions.DEFAULT); System.out.println(JSON.toJSONString(resp));}//判断索引是否存在@Testpublic void existsIndex() throws Exception { GetIndexRequest createIndexReq = new GetIndexRequest(INDEX_DEFAULT); boolean exists = client.indices().exists(createIndexReq, RequestOptions.DEFAULT); System.out.println(JSON.toJSONString(exists));}//删除索引@Testpublic void deleteIndex() throws Exception { DeleteIndexRequest deleteReq = new DeleteIndexRequest(INDEX_DEFAULT); AcknowledgedResponse resp = client.indices().delete(deleteReq, RequestOptions.DEFAULT); System.out.println(JSON.toJSONString(resp));}//endregion建库一般都是提前建好的.
三 文档操作
//region 文档操作//创建文档@Testpublic void addDoc() throws Exception{ User user = User.builder() .id("1") .name("elvin") .age(29) .work("java软件开发工程师") .hobby(new ArrayList<String>() {{ add("篮球"); add("羽毛球"); add("乒乓球"); add("游泳"); }}) .desc("一个喜欢运动, 爱老婆的boy").build(); IndexRequest req = new IndexRequest(INDEX_DEFAULT); req.id(user.getId()); req.timeout("5s"); req.source(JSON.toJSONString(user), XContentType.JSON); IndexResponse resp = client.index(req, RequestOptions.DEFAULT); System.out.println("添加文档 -> " + req.toString()); System.out.println("结果 -> " + resp.toString()); System.out.println("状态 -> " + resp.status());}//判断文档是否存在@Testpublic void existsDoc() throws Exception{ GetRequest req = new GetRequest(INDEX_DEFAULT, "1"); boolean exists = client.exists(req, RequestOptions.DEFAULT); System.out.println("文档是否存在 : " + exists);}//根据id获取文档@Testpublic void getDoc() throws Exception{ GetRequest req = new GetRequest(INDEX_DEFAULT, "1"); GetResponse resp = client.get(req, RequestOptions.DEFAULT); System.out.println("获取到的文档 : " + resp.getSourceAsString());}//修改文档@Testpublic void updateDoc() throws Exception{ User user = new User(); user.setDesc("热爱生活和热爱工作"); UpdateRequest req = new UpdateRequest(INDEX_DEFAULT, "1"); req.id("1"); req.timeout("5s"); req.doc(JSON.toJSONString(user), XContentType.JSON); UpdateResponse resp = client.update(req, RequestOptions.DEFAULT); System.out.println("修改文档 --> " + req.toString()); System.out.println("修改结果 --> " + resp.status()); //getDoc();}//根据id删除文档@Testpublic void deleteDoc() throws Exception{ DeleteRequest req = new DeleteRequest(INDEX_DEFAULT, "1"); DeleteResponse resp = client.delete(req, RequestOptions.DEFAULT); System.out.println("获取到的文档 : " + resp.status());}//批量添加@Testpublic void bulkAddDoc() throws Exception{ List<User> userList = new ArrayList<>(); for (int i = 1; i < 11; i++) { User user = User.builder() .id(String.valueOf(i)) .name("elvin" + i) .age(29) .work("java软件开发工程师") .hobby(new ArrayList<String>() {{ add("篮球"); add("羽毛球"); add("乒乓球"); add("游泳"); }}) .desc("一个喜欢运动, 爱老婆的boy") .build(); userList.add(user); } BulkRequest req = new BulkRequest(); req.timeout("5s"); for (int i = 0; i < userList.size(); i++) { req.add(new IndexRequest(INDEX_DEFAULT) .id(String.valueOf(i + 1 )) .source(JSON.toJSONString(userList.get(i)), XContentType.JSON) ); } BulkResponse resp = client.bulk(req, RequestOptions.DEFAULT); System.out.println("批量添加文档 -> " + resp.hasFailures());}//查询文档@Testpublic void searchDoc() throws Exception{ SearchRequest req = new SearchRequest(INDEX_JD); //构建查询条件 SearchSourceBuilder reqSourceBuilder = new SearchSourceBuilder(); //设置分页 reqSourceBuilder.from(0); reqSourceBuilder.size(5); //设置高亮 HighlightBuilder highlightBuilder = new HighlightBuilder(); highlightBuilder.field("title"); highlightBuilder.preTags("<span style='color:red'>"); highlightBuilder.postTags("</span>"); reqSourceBuilder.highlighter(highlightBuilder); //term查询 TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("title", "java"); reqSourceBuilder.query(termQueryBuilder); reqSourceBuilder.timeout(new TimeValue(5, TimeUnit.SECONDS)); req.source(reqSourceBuilder); SearchResponse resp = client.search(req, RequestOptions.DEFAULT); System.out.println("测试查询文档-----"+JSON.toJSONString(resp.getHits())); System.out.println("====================="); for (SearchHit documentFields : resp.getHits().getHits()) { System.out.println("测试查询文档--遍历参数--"+documentFields.getSourceAsMap()); } System.out.println("----------替换高亮列-----------"); //解析结果 ArrayList<Map<String, Object>> list = new ArrayList<>(); for (SearchHit hit : resp.getHits().getHits()) { //解析高亮的字段 Map<String, HighlightField> highlightFields = hit.getHighlightFields(); HighlightField title = highlightFields.get("title"); Map<String, Object> sourceAsMap = hit.getSourceAsMap(); //解析高亮的字段 if(title != null){ Text[] fragments = title.fragments(); String n_title = ""; for (Text text : fragments) { n_title += text; } //将高亮的字段替换掉原来的字段 sourceAsMap.put("title", n_title); } list.add(sourceAsMap); } list.forEach(n-> System.out.println(JSON.toJSONString(n)));}//endregion文档操作中, 可能查询比较多用一点. 增删改可以通过 canal 来完成.
原文转载:http://www.shaoqun.com/a/481303.html
hemingway:https://www.ikjzd.com/w/2344
韩国naver:https://www.ikjzd.com/w/1727
淘粉吧怎么返利:https://www.ikjzd.com/w/1725
一整合整合代码放在https://gitee.com/elvinle/jd_pachong.git中,并不复杂elasticsearch官方推荐使用rest方式进行操作.二库操作privatestaticStringINDEX_DEFAULT="elvin";privatestaticStringINDEX_JD="jd_goods";@AutowiredR
王惟:https://www.ikjzd.com/w/1744
kkr:https://www.ikjzd.com/w/1340
惠州雷公峡漂流要门票吗?门票是多少?:http://tour.shaoqun.com/a/2736.html
【版纳旅游】—云南西双版纳特产:木碗 - :http://tour.shaoqun.com/a/50000.html
【去加拿大旅游签证好签吗】--去加拿大旅游签证怎么办理:http://tour.shaoqun.com/a/64859.html
没有评论:
发表评论