增加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 测试相关推荐

  1. ElasticSearch 使用Java Api访问集群

    ElasticSearch 使用Java Api访问集群 1.创建maven工程导入pom依赖 <dependencies><dependency><groupId> ...

  2. java search 不能使用方法_ElasticSearch实战系列三: ElasticSearch的JAVA API使用教程

    前言 在上一篇中介绍了ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解,本篇文章就来讲解下 ElasticSearch 6.x官方Java API的 ...

  3. Es elasticsearch 十七 Java api 实现聚合 几个聚合示例 sql 开启许可 新特效 java 实现es7 sql 功能

    目录 Java api 实现聚合 依赖 简单聚合按照颜色分组获取每个卖出数量 聚合每个颜色卖出数量,及平均价格(每个分桶子聚合) 按照颜色分组 ,获取销售数量,avg min max sum 按照60 ...

  4. Elasticsearch——使用Java API实现ES中的索引、映射、文档操作

    文章目录: 1.开篇 2.案例详解 2.1 创建ES客户端:完成与ES服务端的连接 2.2 创建索引 2.3 查看索引 2.4 删除索引 2.5 创建文档 2.6 修改文档 2.7 查看文档 2.8 ...

  5. java api 测试工具_Java 实现在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具

    本站工具,在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具后台所有实现代码.支持的请求协议有:Post.GetDelete.Put.Trace.Head.Options.特色是加了 ...

  6. Elasticsearch用java api 创建mapping

    https://blog.csdn.net/cardinalzbk/article/details/53537254 https://blog.csdn.net/napoay/article/cate ...

  7. es java api 子查询,criteria 子查询 es

    elasticsearch.core.query中Criteria类各个方法详解--CSDN... 2016年2月25日 asticsearch.core.query中Criteria类各个方法详解 ...

  8. Elasticsearch RestHighLevelClient 已标记为被弃用 它的替代方案 Elasticsearch Java API Client 的基础教程及迁移方案

    在Elasticsearch7.15版本之后,Elasticsearch官方将它的高级客户端RestHighLevelClient标记为弃用状态.同时推出了全新的Java API客户端Elastics ...

  9. Elasticsearch Java API 6.2(java client)

    前言 本节描述了Elasticsearch提供的Java API,所有的Elasticsearch操作都使用客户端对象执行,所有操作本质上都是完全异步的(要么接收监听器,要么未来返回). 此外,客户端 ...

最新文章

  1. java file_Java IO: File
  2. PE学习(二) IMAGE_DOS_HEADER
  3. 不改变原数组的一些方法
  4. vertical-align和line-height的深入应用
  5. 4 weekend110的hive入门
  6. 组合,Mixin,类、类对象、实例对象
  7. 推荐一个CodeProject上的SlideForm控件
  8. Springboot中拦截器的使用
  9. 河南高二计算机会考excel,(完整版)高中信息技术学业水平考试Word、Excel操作题考点总结...
  10. 国庆不出京!沉浸式high玩清凉谷
  11. 机器学习和深度学习资源汇总(陆续更新)
  12. qcloud-ocr
  13. 使用Flutter开发Github客户端及学习历程的小结
  14. openmp多线程简单编程
  15. 算法模版:暴力搜索之DFS【沈七】
  16. 记一个ie兼容apos
  17. Cesium空间分析-填挖方计算
  18. 2021届 美的笔试 C++开发工程师
  19. 元宇宙的特征 —— 社交网络
  20. 谷歌影像、天地图、30mDEM、土地覆盖数据...一个软件都可免费下载

热门文章

  1. 并发,std::thread
  2. Android系统中标准Intent的使用
  3. XenDesktop5.0 Add Host使用vSphere5.1客户端注意事项
  4. [转]C#遍历局域网的几种方法及比较
  5. 如何为windows服务添加安装程序(转)
  6. Linux下如何使用虚拟用户增加FTP的安全性
  7. qpython3安装lxml_centos python安装lxml报错
  8. 【转载】IP网络位,主机位,广播地址及掩码
  9. gitlab 添加本地项目
  10. c++常见操作的模板