ElasticSearch bulk批量插入数据
环境:使用RestHighLevelClient进行bulk操作
代码如下:
/** * es 批量存数据的方法 * 1.创建es clent * 2.创建bulk请求体 * 3.向bulk请求体中添加多个数据 * 4.发起rest请求 * 5.关闭client * @throws IOException */ public void bulk2() throws IOException { int a = 1; //创建连接 RestHighLevelClient restClient = new RestHighLevelClient( RestClient.builder( new HttpHost("localhost",9200,"http") ) ); BulkRequest request = new BulkRequest(); // source中可以存入Map(String,Object) request.add(new IndexRequest("index_text","doc","1") .source(XContentType.JSON,"name","amy","age",10)) .add(new IndexRequest("index_text","doc","2") .source(XContentType.JSON,"name","bob","age",11)); restClient.bulk(request); restClient.close(); }
代码中传入source()中的参数还可以为一下形式
// 通过Map(String,Object) 构建source中的参数 BulkRequest request2 = new BulkRequest(); Map<String,Object> jsonMap = new HashMap<>(); jsonMap.put("name","小明"); jsonMap.put("age",11); request2.add(new IndexRequest("index_text","doc","1") .source(jsonMap)); restClient.bulk(request2); // 通过XContentBuilder 构建source中的参数 XContentBuilder builder = new XContentFactory().jsonBuilder(); builder.startObject(); { builder.field("name","小红"); builder.timeField("date",new Date()); } builder.endObject(); BulkRequest request3 = new BulkRequest(); request3.add(new IndexRequest("index_text","doc","5") .source(builder));
出现问题:...报错
原因:依赖不对 org.elasticsearch elasticsearch 依赖因与本地es版本相同(我使用的为6.3.1)
所需依赖如下(4个):
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>6.3.2</version> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>6.3.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.11.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.11.1</version> </dependency>