依赖
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>6.8.1</version> </dependency>
一、连接
// 设置集群名字 Settings settings = Settings.builder().put("cluster.name", "elasticsearch-6.2.3-local").build(); // 获取连接 TransportClient client = new PreBuiltTransportClient(settings).addTransportAddress(new TransportAddress(InetAddress.getByName("127.0.0.1"), 9300)); // 关闭连接 client.close();
二、索引
// 创建索引 client.admin().indices().prepareCreate("user").execute().actionGet(); // 删除索引 client.admin().indices().prepareDelete("user").get();
三、查询
// 构建查询条件 QueryBuilder match = QueryBuilders.matchQuery("sex", "男"); // 根据查询条件构建查询语句 SearchRequestBuilder search = client.prepareSearch("user") .setQuery(match) .setTypes("user") // 指定类型,可选 .setFrom(0 * 100).setSize(100) // 分页,可选 .addSort("age", SortOrder.DESC); // 排序,可选 // 获取搜索结果 SearchResponse response = search.get(); // 命中的文档 SearchHits hits = response.getHits(); System.out.println("当前索引总数:" + hits.getTotalHits()); System.out.println("查询结果总数:" + hits.getHits().length); for (SearchHit hit : hits.getHits()) { System.out.println("文档元数据 JSON:" + hit.getIndex()); System.out.println("文档元数据 Map:" + hit.getSourceAsMap()); } // 单条记录查询 GetResponse documentFields = client.prepareGet("user", "user", "10086").execute().actionGet(); documentFields.getSourceAsMap();
四、插入
// 单条插入 Map<String, Object> userMap = new HashMap<>(); userMap.put("age", "18"); client.prepareIndex("user", "user", "10086").setSource(userMap).execute().actionGet(); // 批量插入 BulkRequestBuilder bulkRequestBuilder = client.prepareBulk(); for (Map<String, Object> map : list) { bulkRequestBuilder.add(yofc.prepareIndex("user", "user", map.get("id").toString()).setSource(map)); } bulkRequestBuilder.execute().actionGet(); // 批量插入 BulkProcessor bulkProcessor = BulkProcessor.builder( client, new BulkProcessor.Listener() { @Override public void beforeBulk(long l, BulkRequest bulkRequest) { System.out.println("插入" + bulkRequest.numberOfActions() + "条数据开始"); } @Override public void afterBulk(long l, BulkRequest bulkRequest, BulkResponse bulkResponse) { System.out.println("插入" + bulkRequest.numberOfActions() + "条数据成功"); } @Override public void afterBulk(long l, BulkRequest bulkRequest, Throwable throwable) { System.out.println("插入" + bulkRequest.numberOfActions() + "条数据失败"); } }) .setBulkActions(1000) .setBulkSize(new ByteSizeValue(100, ByteSizeUnit.MB)) .setFlushInterval(TimeValue.timeValueSeconds(5)) .setConcurrentRequests(1) .build(); for (Map<String, Object> map : list) { bulkProcessor.add(new IndexRequest("user", "user", map.get("id").toString()).source(map)); } bulkProcessor.flush(); bulkProcessor.close();
https://www.elastic.co/guide/en/elasticsearch/client/java-api/6.8/index.html