1,elasticsearch导入json格式数据,代码如下:
try { //读取刚才导出的ES数据 BufferedReader br = new BufferedReader(new FileReader("D:/item6.json")); String json = null; int count = 0; //开启批量插入 BulkRequestBuilder bulkRequest = client.prepareBulk(); while ((json = br.readLine()) != null) { //setId方法可以指定index中的_Id字段的值,否则的话,es会自动生成id,可能造成数据的重复存储 bulkRequest.add(client.prepareIndex("6", "item6").setId("0000"+count).setSource(json)); //每100条提交一次 if (count% 100==0) { bulkRequest.execute().actionGet(); System.out.println("提交了:" + count); } count++; } bulkRequest.execute().actionGet(); System.out.println("插入完毕"); br.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
json数据需要一条数据放在一行,可使用navicat工具从mysql导出查询的结果,然后使用ue编辑器进行格式替换处理,如下:
{"item_name":"gugu","brand_name":"西门子","c_name":"网络摄像机"}
{"item_name":"索尼(SONY) HDR-PJ670 高清数码摄像机","brand_name":"西门子","c_name":"网络摄像机"}
{"item_name":"llb1008测试商品","brand_name":"Netskys","c_name":"安防"}
2,elasticsearch导出json格式数据,代码如下:
SearchResponse response = client.prepareSearch("6").setTypes("item6") .setQuery(QueryBuilders.matchAllQuery()).setSize(10000).setScroll(new TimeValue(600000)) .setSearchType(SearchType.SCAN).execute().actionGet(); String scrollid = response.getScrollId(); try { //把导出的结果以JSON的格式写到文件里 BufferedWriter out = new BufferedWriter(new FileWriter("D:/item6_export.json", true)); //每次返回数据10000条。一直循环查询直到所有的数据都查询出来 while (true) { SearchResponse response2 = client.prepareSearchScroll(scrollid).setScroll(new TimeValue(1000000)).execute().actionGet(); SearchHits searchHit = response2.getHits(); //再次查询不到数据时跳出循环 if (searchHit.getHits().length == 0) { break; } System.out.println("查询数量 :" + searchHit.getHits().length); for (int i = 0; i < searchHit.getHits().length; i++) { String json = searchHit.getHits()[i].getSourceAsString(); out.write(json); out.write("\r\n"); } } System.out.println("查询结束"); out.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }