ElasticSearch(map数据类型)Java api 增(批量)删改查(全字段、高亮)
来源:互联网 发布:mac怎么压缩rar 编辑:程序博客网 时间:2024/05/20 04:47
前面写了搭建,今天写一篇关于Java api的增删改查以及全字段查询和高亮展示,官方api 地址[https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html]。
一、增
首先添加相应的pom依赖、resource 文件 <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>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.4.1</version>
</dependency>
resource文件 log4j.properties
###Console ###log4j.appender.console = org.apache.log4j.ConsoleAppenderlog4j.appender.console.Target = System.outlog4j.appender.console.layout = org.apache.log4j.PatternLayoutlog4j.appender.console.layout.ConversionPattern = %d %p[%C:%L]- %m%n
获取一个TransportClient的实例去连接es类似连接数据库代码
Settings settings=Settings.builder().put("cluster.name","yourclustername").build(); TransportClient client = new PreBuiltTransportClient(settings).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("yourhostaddress"), 9300));
Map<String, Object> testMap = new HashMap<>();testMap.put("title","java 编程思想");testMap.put("id",1);//单个Map插入IndexResponse response = client.prepareIndex("索引","yourtype",testMap.get("id")+"").setSource(testMap).get();System.out.println(response.getResult());client.close();
//批量插入List<Map<String,Object>> list = new ArryList<>();for(int i=0;i<10;i++){ testMap.put("id",i); list.add(testMap);}BulkRequestBuilder bulkRequestBuilder=client.prepareBulk();for (int i=0;i<list.size();i++){ bulkRequestBuilder.add(client.prepareIndex("索引","yourtype").setId(list.get(i).get("id")+"").setSource(list.get(i)));}BulkResponse bulkResponse=bulkRequestBuilder.execute().actionGet();bulkRequestBuilder.request().requests().clear();if (bulkResponse.hasFailures()){ System.out.print("Fail");}System.out.print(bulkResponse.status());client.close();
二、删除
//删除id为0的ES里的数据DeleteResponse response = client.prepareDelete("索引","yourtype","0").get();System.out.print(response.getResult());
三、修改(就是添加ID是里面已有的ID覆盖以前的数据)
//修改ES里id为1的那条数据title改为Tinking in JavatestMap.put("title","Thinking in Java");IndexResponse response = client.prepareIndex("索引","yourtype","1").setSource(testMap).get();System.out.println(response.getResult());client.close();
四、查
QueryBuilder qb = QueryBuilders.multiMatchQuery("yourSearchString","_all");HighlightBuilder highlightBuilder=new HighlightBuilder().field("*").requireFieldMatch(false);highlightBuilder.preTags("<strong style='color:red'>");highlightBuilder.postTags("</strong>");String[] yourTypes={yourTypes}; if (yourTypes==""||yourTypes==null){ yourTypes=new String[0]; }SearchResponse response=client.prepareSearch("索引").setTypes(yourTypes).setFrom(pageIndex).setSize(pageSize).setQuery(qb).highlighter(highlightBuilder).execute().actionGet(); SearchHits searchHits=response.getHits();List<Map> sources=new ArrayList<>();if (searchHits.totalHits>0){ for (SearchHit hit:searchHits){ Map<String,Object> source=hit.getSource(); for (String key:hit.getSource().keySet()){ HighlightField highlightField=hit.getHighlightFields().get(key); if (highlightField!=null){ Text[]fragments=highlightField.fragments(); String value=""; for (Text text:fragments){ value+=text; } //替换为高亮字段 source.put(key,value); } } Map<String,Object> esearch=new HashMap<>(); esearch.put("source",esmap); esearch.put("total",searchHits.totalHits); sources.add(esearch);} client.close(); return sources;
索引和type是要你自己去手动填写的,这是我看了官方api写的一个列子 不足之处希望大家多多指教!
今天就写这么多了,大家可以留言互相讨论~晚安~
- ElasticSearch(map数据类型)Java api 增(批量)删改查(全字段、高亮)
- ElasticSearch Java API(二)增删改查
- mybatis简单运用(添删改查)
- MySQL是什么玩意儿(三)查删改
- Java基础-JDBC增(删改)测试
- 分布式搜索elasticsearch java API 之 highlighting (对搜索结果的高亮显示)
- Elasticsearch(五)elasticsearch高亮搜索
- 分布式搜索elasticsearch java API 之(六)------批量添加删除索引
- 分布式搜索elasticsearch java API 之(六)------批量添加删除索引
- 分布式搜索elasticsearch java API 之(六)------批量添加删除索引
- Elasticsearch Java API 的使用(9)—Bulk大数据量的批量上传
- Elasticsearch java API批量处理
- ElasticSearch实战 (二)CRUD以及bulk批量操作 api
- 分布式搜索elasticsearch java API 之(二)------put Mapping定义索引字段属性
- 分布式搜索elasticsearch java API 之(二)------put Mapping定义索引字段属性
- 分布式搜索elasticsearch java API 之(二)------put Mapping定义索引字段属性
- 分布式搜索elasticsearch java API 之(二)------put Mapping定义索引字段属性
- mongoDB的基本操作(正删改查)(整理)
- fzuoj 2186 小明的迷宫 bfs+bfs状压+剪枝
- java从入门到入土(3)文件上传
- php中正则表达式详解
- 夜神,逍遥,天天连接AS
- Nginx配置文件详解
- ElasticSearch(map数据类型)Java api 增(批量)删改查(全字段、高亮)
- webpack构建工具安装
- 批量前移list中指定的元素
- 简述 synchronized 和 java.util.concurrent.locks.Lock 的异同 ?
- 二进制中1的个数
- 基于eclipse的android开发环境配置
- C51中断函数格式
- 简单LinuxC程序关于逆序一个中英混合字符串
- 2017.7.14 流水帐系列