ElasticSearch之Java Api 测试
增加Maven依赖
<dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>5.0.0</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>transport</artifactId><version>5.0.0</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.7</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.7</version></dependency><dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.8.0</version> </dependency>
src/main/resource下增加log4j2.properties
appender.console.type = Console
appender.console.name = console
appender.console.layout.type = PatternLayout
rootLogger.level = info
rootLogger.appenderRef.console.ref = console
package com.zns.test;import java.net.InetAddress; import java.util.Map; import org.elasticsearch.action.admin.indices.create.CreateIndexResponse; import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse; import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest; import org.elasticsearch.action.bulk.BulkRequestBuilder; import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchType; import org.elasticsearch.action.update.UpdateResponse; import org.elasticsearch.client.Requests; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.text.Text; import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHits; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.metrics.avg.Avg; import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; import org.elasticsearch.transport.client.PreBuiltTransportClient;public class MyTest { public static TransportClient client=null;//创建索引库public static void createIndex(String index){CreateIndexResponse createIndexResponse = client.admin().indices().prepareCreate(index).get();System.out.println(createIndexResponse.isAcknowledged()); // true表示成功 }//给索引库增加 type,mappingpublic static void addMapping(String index,String type) throws Exception{// 使用XContentBuilder创建MappingXContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("properties").startObject().field("user_id").startObject().field("type", "integer").endObject().field("name").startObject().field("analyzer", "standard").field("type", "text").endObject().field("age").startObject().field("type", "integer").endObject().endObject().endObject();System.out.println(builder.string()); PutMappingRequest mappingRequest = Requests.putMappingRequest(index).source(builder).type(type);client.admin().indices().putMapping(mappingRequest).actionGet();}//删除索引库public static void deleteIndex(String index){DeleteIndexResponse deleteIndexResponse = client.admin().indices().prepareDelete(index).get();System.out.println(deleteIndexResponse.isAcknowledged()); // true表示成功 }//创建文档public static void createDoc(String index, String type) throws Exception {// 使用XContentBuilder创建一个doc sourceXContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("user_id", "1").field("name", "name1").field("age", "1").endObject();// setId(id) 如果没有设置id,则ES会自动生成一个id setSource 可以是XContentBuilder,map,json,javabeans等IndexResponse indexResponse = client.prepareIndex().setIndex(index).setType(type).setId("1").setSource(builder.string()).get(); }//根据ID查询文档public static String getById(String index, String type, String id) {GetResponse getResponse = client.prepareGet().setIndex(index).setType(type).setId(id).get();return getResponse.getSourceAsString();}//查询文档public static void query(String index, String type) {SearchResponse response = client.prepareSearch(index).setTypes(type).setSearchType(SearchType.DFS_QUERY_THEN_FETCH)//.setQuery(QueryBuilders.termQuery("user_id", "1"))//.setQuery(QueryBuilders.rangeQuery("user_id").lte("100"))//.setQuery(QueryBuilders.rangeQuery("age").from(1).to(18)).setFrom(0).setSize(10).setExplain(true).get();SearchHits hits = response.getHits();System.out.println(hits.getHits().length);SearchHit[] hits1 = hits.getHits();for(SearchHit hit :hits1){// ID 为hit.getId();Map<String, Object> source = hit.getSource();for(Map.Entry<String,Object> filed :source.entrySet()){String key = filed.getKey();System.out.println("key===="+key+" value====="+filed.getValue().toString());}}}//根据ID更新文档public static void updateById(String index, String type, String id) throws Exception { XContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("user_id", "1").field("name", "name222").field("age", "1").endObject(); UpdateResponse updateResponse = client.prepareUpdate(index, type, id).setDoc(builder).get(); }//根据ID删除文档public static void deleteById(String index, String type, String id) {DeleteResponse deleteResponse =client.prepareDelete() .setIndex(index).setType(type).setId(id).get();System.out.println(deleteResponse.status());} //聚和函数 求平均年龄public static void juheTest(String index,String type){SearchResponse response = client.prepareSearch(index).setTypes(type).addAggregation(AggregationBuilders.avg("xxx").field("age")).get();Avg avg = response.getAggregations().get("xxx");System.out.println(avg.getValue());}//批量增加操作public static void bulkAddTest(String index,String type) throws Exception{BulkRequestBuilder bulkRequest = client.prepareBulk(); XContentBuilder builder1 = XContentFactory.jsonBuilder().startObject().field("user_id", "11").field("name", "name11").field("age", "11").endObject();bulkRequest.add(client.prepareIndex().setIndex(index).setType(type).setId("11").setSource(builder1.string()));XContentBuilder builder2 = XContentFactory.jsonBuilder().startObject().field("user_id", "22").field("name", "name22").field("age", "22").endObject();bulkRequest.add(client.prepareIndex().setIndex(index).setType(type).setId("22").setSource(builder2.string()));BulkResponse bulkResponse = bulkRequest.get(); if (bulkResponse.hasFailures()) { // process failures by iterating through each bulk response item } }//高亮public static void highlightTest(String index,String type,String keyword,Integer from,Integer size){HighlightBuilder highlightBuilder = new HighlightBuilder();highlightBuilder.preTags("<span style=\"color:red\">");highlightBuilder.postTags("</span>");highlightBuilder.field("*");highlightBuilder.requireFieldMatch(false);SearchRequestBuilder builder = client.prepareSearch(index);builder.setTypes(type);builder.setFrom(from);builder.setSize(size);builder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH); builder.setExplain(true); builder.setQuery(QueryBuilders.multiMatchQuery(keyword,"name")); builder.highlighter(highlightBuilder);SearchResponse searchResponse = builder.get(); //获取查询结果集SearchHits searchHits = searchResponse.getHits();System.out.println("共搜到:"+searchHits.getTotalHits()+"条结果!");SearchHit[] hits2 = searchHits.getHits();//遍历结果for(SearchHit hit:hits2){System.out.println("String方式打印文档搜索内容:");System.out.println(hit.getSourceAsString());System.out.println("Map方式打印高亮内容");System.out.println(hit.getHighlightFields());System.out.println("遍历高亮集合,打印高亮片段:");Text[] text = hit.getHighlightFields().get("name").getFragments();for (Text str : text) {System.out.println(str.string());}}}public static void main(String[] args) throws Exception {// 设置集群名称Settings settings = Settings.builder().put("cluster.name", "my-es").build();// 创建clientclient = new PreBuiltTransportClient(settings).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));String index="znsindex";String type="znstype";//createIndex(index);//addMapping(index,type);//deleteIndex(index);//createDoc(index, type);//String result=getById(index, type, "1");//System.out.println(result); //deleteById(index, type, "1");//updateById(index, type, "1");//juheTest(index, type); //bulkAddTest(index, type);//highlightTest(index, type,"name1",0,10);//query(index, type); } }
转载于:https://www.cnblogs.com/zengnansheng/p/10389722.html
ElasticSearch之Java Api 测试相关推荐
- ElasticSearch 使用Java Api访问集群
ElasticSearch 使用Java Api访问集群 1.创建maven工程导入pom依赖 <dependencies><dependency><groupId> ...
- java search 不能使用方法_ElasticSearch实战系列三: ElasticSearch的JAVA API使用教程
前言 在上一篇中介绍了ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解,本篇文章就来讲解下 ElasticSearch 6.x官方Java API的 ...
- Es elasticsearch 十七 Java api 实现聚合 几个聚合示例 sql 开启许可 新特效 java 实现es7 sql 功能
目录 Java api 实现聚合 依赖 简单聚合按照颜色分组获取每个卖出数量 聚合每个颜色卖出数量,及平均价格(每个分桶子聚合) 按照颜色分组 ,获取销售数量,avg min max sum 按照60 ...
- Elasticsearch——使用Java API实现ES中的索引、映射、文档操作
文章目录: 1.开篇 2.案例详解 2.1 创建ES客户端:完成与ES服务端的连接 2.2 创建索引 2.3 查看索引 2.4 删除索引 2.5 创建文档 2.6 修改文档 2.7 查看文档 2.8 ...
- java api 测试工具_Java 实现在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具
本站工具,在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具后台所有实现代码.支持的请求协议有:Post.GetDelete.Put.Trace.Head.Options.特色是加了 ...
- Elasticsearch用java api 创建mapping
https://blog.csdn.net/cardinalzbk/article/details/53537254 https://blog.csdn.net/napoay/article/cate ...
- es java api 子查询,criteria 子查询 es
elasticsearch.core.query中Criteria类各个方法详解--CSDN... 2016年2月25日 asticsearch.core.query中Criteria类各个方法详解 ...
- Elasticsearch RestHighLevelClient 已标记为被弃用 它的替代方案 Elasticsearch Java API Client 的基础教程及迁移方案
在Elasticsearch7.15版本之后,Elasticsearch官方将它的高级客户端RestHighLevelClient标记为弃用状态.同时推出了全新的Java API客户端Elastics ...
- Elasticsearch Java API 6.2(java client)
前言 本节描述了Elasticsearch提供的Java API,所有的Elasticsearch操作都使用客户端对象执行,所有操作本质上都是完全异步的(要么接收监听器,要么未来返回). 此外,客户端 ...
最新文章
- java file_Java IO: File
- PE学习(二) IMAGE_DOS_HEADER
- 不改变原数组的一些方法
- vertical-align和line-height的深入应用
- 4 weekend110的hive入门
- 组合,Mixin,类、类对象、实例对象
- 推荐一个CodeProject上的SlideForm控件
- Springboot中拦截器的使用
- 河南高二计算机会考excel,(完整版)高中信息技术学业水平考试Word、Excel操作题考点总结...
- 国庆不出京!沉浸式high玩清凉谷
- 机器学习和深度学习资源汇总(陆续更新)
- qcloud-ocr
- 使用Flutter开发Github客户端及学习历程的小结
- openmp多线程简单编程
- 算法模版:暴力搜索之DFS【沈七】
- 记一个ie兼容apos
- Cesium空间分析-填挖方计算
- 2021届 美的笔试 C++开发工程师
- 元宇宙的特征 —— 社交网络
- 谷歌影像、天地图、30mDEM、土地覆盖数据...一个软件都可免费下载