es入门学习7-java-es自身API
es入门学习7-java-es自身API
- 使用起前面的集群环境进行学习
一、 公共的东西
1.1、项目位置
1.2、导入依赖
<dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>5.6.8</version>
</dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>transport</artifactId><version>5.6.8</version>
</dependency><dependency><groupId>org.elasticsearch.plugin</groupId><artifactId>transport-netty4-client</artifactId><version>5.6.8</version>
</dependency>
1.3、工具类
package fei.zhou.elasticsearch01;import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.junit.Test;public class ESTools {public static String ipStr1 = "60.205.188.229";public static String ipStr2 = "60.205.188.229";public static String ipStr3 = "60.205.188.229";public static int port1 = 9301;public static int port2 = 9302;public static int port3 = 9303;// 集群名称public static String clusterName = "cluster.name";// 集群名称的值public static String clusterNameValue = "elasticsearch";/*** 创建客户端* * @author feizhou* @since 2020/12/28 11:10*/public static TransportClient createClient() throws UnknownHostException {// 创建一个Settings对象Settings settings = Settings.builder()// 构建集群名称.put(clusterName, clusterNameValue).build();// 创建一个TransPortClient对象TransportClient client = new PreBuiltTransportClient(settings);// 添加集群间的通讯client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ipStr1), port1));client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ipStr2), port2));client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ipStr3), port3));System.out.println("创建客户端成功");return client;}/*** 关闭客户端* * @author feizhou* @since 2020/12/28 11:10*/public static void closeClient(TransportClient client) {client.close();System.out.println("成功关闭客户端");}/*** 查询* * @author feizhou* @since 2020/12/28 12:00*/public static SearchHit[] search(QueryBuilder queryBuilder, String indices, String types) throws Exception {TransportClient client = createClient();// 执行查询SearchResponse searchResponse = client.prepareSearch(indices).setTypes(types).setQuery(queryBuilder)// 执行查询.get();// 取查询结果SearchHits searchHits = searchResponse.getHits();SearchHit[] hits = searchHits.getHits();// 关闭clientcloseClient(client);return hits;}/*** 分页查询* * @author feizhou* @since 2020/12/28 12:00*/public static SearchHits searchPage(QueryBuilder queryBuilder, String indices, String types, int startIndex,int pageSize) throws Exception {TransportClient client = createClient();// 执行查询SearchResponse searchResponse = client.prepareSearch(indices).setTypes(types).setQuery(queryBuilder)// 设置分页信息.setFrom(startIndex)// 每页显示的行数.setSize(pageSize)// 执行查询.get();// 取查询结果SearchHits searchHits = searchResponse.getHits();// 关闭clientcloseClient(client);return searchHits;}}
二、 索引
2.1、创建索引
@Test// 创建索引public void createIndex() throws Exception {TransportClient client = ESTools.createClient();// 使用client对象创建一个索引库client.admin().indices().prepareCreate("blog5")// 执行操作.get();ESTools.closeClient(client);}
三、 映射mapping
3.1、创建映射mapping
@Test// 创建映射public void createMapping() throws Exception {TransportClient client = ESTools.createClient();XContentBuilder xContentBuilder = XContentFactory.jsonBuilder().startObject().startObject("article").startObject("properties").startObject("id").field("type","long").field("store", true).endObject().startObject("title").field("type", "text").field("store", true).field("analyzer", "ik_smart").endObject().startObject("content").field("type", "text").field("store", true).field("analyzer","ik_smart").endObject().endObject().endObject().endObject();//使用client把mapping信息设置到索引库中client.admin().indices()//设置要做映射的索引.preparePutMapping("blog5")//设置要做映射的type.setType("article")//mapping信息//可以是XContentBuilder对象//可以是json格式的字符串.setSource(xContentBuilder)//执行操作.get();ESTools.closeClient(client);}
四、 文档document
4.1、创建文档
4.1.1、创建文档1(通过XContentBuilder)
@Test// 创建一个文档对象public void createDocument() throws Exception {TransportClient client = ESTools.createClient();//创建一个文档对象XContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("id",1).field("title","北方入秋速度明显加快 多地降温幅度最多可达10度22222").field("content", "低龄未成年人严重犯罪问题,社会关注,如何做到不枉不纵,精准惩治?刑法修正案(十一)对此作出重大修改,对法定最低刑事责任年龄作个别下调。规定12周岁以上低龄未成年人实施以下犯罪行为,应当负刑事责任").endObject();//把文档对象添加到索引库client.prepareIndex()//设置索引名称.setIndex("blog5")//设置type.setType("article")//设置文档的id,如果不设置的话自动的生成一个id.setId("1")//设置文档信息.setSource(builder)//执行操作.get();ESTools.closeClient(client);}
4.1.2、创建文档2
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.6</version>
</dependency>package fei.zhou.elasticsearch01.demo2;import com.fasterxml.jackson.databind.ObjectMapper;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentType;
import org.junit.Test;import fei.zhou.elasticsearch01.ESTools;public class Test1 {@Testpublic void createDocument2() throws Exception {TransportClient client = ESTools.createClient();//创建一个Article对象Article article = new Article();//设置对象的属性article.setId(3);article.setTitle("快讯!外媒:英国著名双面间谍乔治·布莱克在俄去世,终年98岁");article.setContent("【环球网报道】路透社刚刚消息称,俄罗斯对外情报局发言人伊万诺夫告诉塔斯社,英国冷战时期著名的双面间谍乔治·布莱克26日在俄罗斯去世,终年98岁。据路透社此前介绍,在1944年至1961年期间,布莱克曾担任英国的秘密间谍,后被起诉为前苏联刺探军情而被判入狱42年。1966年他从伦敦越狱,之后一直生活在莫斯科。2007年,俄罗斯对外情报局还为布莱克授勋,庆祝这名双重间谍85岁寿辰。");//把article对象转换成json格式的字符串。ObjectMapper objectMapper = new ObjectMapper();String jsonDocument = objectMapper.writeValueAsString(article);//使用client对象把文档写入索引库client.prepareIndex("blog5","article", "3").setSource(jsonDocument, XContentType.JSON).get();ESTools.closeClient(client);}public class Article {private long id;private String title;private String content;public long getId() {return id;}public void setId(long id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}}}
4.2、查询
4.2.1、关键词查询
@Testpublic void testTermQuery() throws Exception {QueryBuilder queryBuilder = QueryBuilders.termQuery("content", "建了");String indices = "blog5";String types = "article";SearchHit[] hits = ESTools.search(queryBuilder, indices, types);if (hits != null && hits.length > 0) {for (SearchHit hit : hits) {Map<String, Object> map = hit.getSource();System.out.println("文档内容:" + map);}}}
4.2.2、字符串查询
@Testpublic void testQueryStringQuery() throws Exception {// 创建一个QueryBuilder对象QueryBuilder queryBuilder = QueryBuilders.queryStringQuery("建了房子").defaultField("content");String indices = "blog5";String types = "article";SearchHit[] hits = ESTools.search(queryBuilder, indices, types);if (hits != null && hits.length > 0) {for (SearchHit hit : hits) {Map<String, Object> map = hit.getSource();System.out.println("文档内容:" + map);}}}
4.2.3、ID查询
@Test
public void testSearchById() throws Exception {// 创建一个QueryBuilder对象QueryBuilder queryBuilder = QueryBuilders.idsQuery().addIds("1", "3");String indices = "blog5";String types = "article";SearchHit[] hits = ESTools.search(queryBuilder, indices, types);if (hits != null && hits.length > 0) {for (SearchHit hit : hits) {Map<String, Object> map = hit.getSource();System.out.println("文档内容:" + map);}}}
4.2.4、分页查询
@Testpublic void testSearchPage() throws Exception {// 创建一个QueryBuilder对象QueryBuilder queryBuilder = QueryBuilders.idsQuery().addIds("1", "3", "4", "5", "6");String indices = "blog5";String types = "article";int startIndex = 0;int pageSize = 2;SearchHits searchHits = ESTools.searchPage(queryBuilder, indices, types, startIndex, pageSize);System.out.println("查询结果总记录数:" + searchHits.getTotalHits());SearchHit[] hits = searchHits.getHits();if (hits != null && hits.length > 0) {for (SearchHit hit : hits) {Map<String, Object> map = hit.getSource();System.out.println("文档内容:" + map);}}}
4.2.5、查询结果高亮操作
@Testpublic void testSearchPageHight() throws Exception {TransportClient client = ESTools.createClient();// 创建一个QueryBuilder对象QueryBuilder queryBuilder = QueryBuilders.queryStringQuery("建了房子").defaultField("content");String indices = "blog5";String types = "article";String highlightField = "content";HighlightBuilder highlightBuilder = new HighlightBuilder();// 高亮显示的字段highlightBuilder.field(highlightField);highlightBuilder.preTags("<em>");highlightBuilder.postTags("</em>");// 执行查询SearchResponse searchResponse = client.prepareSearch(indices).setTypes(types).setQuery(queryBuilder)// 设置高亮信息.highlighter(highlightBuilder)// 执行查询.get();// 取查询结果SearchHits searchHits = searchResponse.getHits();System.out.println("查询结果总记录数:" + searchHits.getTotalHits());System.out.println("************高亮结果");SearchHit[] hits = searchHits.getHits();if (hits != null && hits.length > 0) {for (SearchHit hit : hits) {Map<String, HighlightField> highlightFields = hit.getHighlightFields();System.out.println("高亮字段:" + highlightFields);}}ESTools.closeClient(client);}
代码地址
https://gitee.com/DanShenGuiZu/learnDemo/tree/mysql_mybaties_DB/elasticsearch-learn
es入门学习7-java-es自身API相关推荐
- Linux中的Java类,Java基础入门学习-Java中类的属性
Java基础入门学习-Java中类的属性 发布时间:2006-05-27 00:46:15来源:红联作者:WWW Public.private.protected显示了三种类中的属性和服务的类型,pu ...
- ES入门学习:ElasticSearch、Kibana、ik分词器的安装、简单使用及SpringBoot集成
前言 es是采用Java语言开发,因此,想要安装运行es需要提前准备好jdk环境,关于linux配置jdk在前文linux配置jdk 本文主要介绍es的安装.kibana的安装和简单使用及ik分词器的 ...
- zookeeper入门学习之java api会话建立《四》
在上一篇zk中简单玩了下api的连接创建会话,也总是留下了很多坑,就是那些引申开来,搞不明白的问题.有时候想追究起来,问题总是那么无穷无尽,有时候问题比答案更有力度吧,到最后都是些哲学问题吗?存在的这 ...
- 【Java入门学习】JAVA设计一个雇员类,创建雇员类对象
题目:设计一个雇员类,创建雇员类对象,统计雇员的出勤人数 1.属性包括:编号.姓名.年龄.职务.部门.出勤人数 2.方法包括:构造方法.输出信息的方法.签到方法 要求: 1.考虑属性和方法的访问权限 ...
- java 调用win32 api 学习总结
java使用JInvoke调用windows API 使用jinvoke调用windowsAPI.jna使用比较麻烦,需要写c代码和参数转换,jinvoke的使用就像jdk中的包一样. 官网使用参考: ...
- sts java配置tomcat_Java Web入门学习(一) STS与Tomcat配置
Java Web学习(一) STS与Tomcat配置 一.IDE的选择 使用基于Eclipse的STS Ide ,个人感觉挺好用的. 根据以上两张图片,将STS 下载下来.然后解压缩. 用编辑器打开S ...
- ES(Elasticsearch)入门学习教程
Elasticsearch 入门学习教程 1.1 为什么要学Elasticsearch? 1.2 如何下载安装使用ES? 1.2.1 ES 安装使用条件 1.2.2 ES 下载须知 1.2.3 ES ...
- PHP的ES入门(一)—— Index的创建和删除
大神请看 本文不一定写的全部都对,如果有哪里写得不好或者不对,可以提但请不要喷,不喜勿看绕道走就是了,虽然有可能在一些小知识点上会误导小白,但是还是可以看看基础的ES操作,对于使用还是一点帮助的 ES ...
- php es使用,PHP的ES入门(一)—— Index的创建和删除
大神请看 本文不一定写的全部都对,如果有哪里写得不好或者不对,可以提但请不要喷,不喜勿看绕道走就是了,虽然有可能在一些小知识点上会误导小白,但是还是可以看看基础的ES操作,对于使用还是一点帮助的 ES ...
最新文章
- 在ML中缺乏数据可是个大问题,亲测有效的5种方法帮您解决
- 在代码中定义一个执行线程的步骤
- Qt学习之路_1(安装及首次体验)
- AAAI 2019 | 自动机器学习计算量大!这种多保真度优化技术是走向应用的关键
- 2020“高教社”杯全国大学生数学建模竞赛——建模国赛优秀论文
- pcm 8k单声道和双声道采样_音频接口PCM
- MySQL 数据库图形化管理界面应用种草之 Navicat Premium 如何使用
- 10.14. Network
- Github 标星 13K+!这可能是最好的 Java 博客系统
- mysql 高并发 优惠券_转 mysql处理高并发,防止库存超卖
- Adobe 再次发布带外更新,修复影响10款产品的漏洞
- Response.setContentType 可设置属性
- 【转贴】我对测试工作的一些认识
- adb shell按键操作(input keyevent)
- PascalVOC Dataset下载链接
- ccy 朴素版(顺序搜索)19ms
- libvlc 裁剪及编译
- 澳大利亚计算机博士几年,澳洲墨尔本大学博士读几年
- Lavazza咖啡店进中国一年已在上海开出5家门店;IMA年度全球薪酬调查结果出炉;全球生物制药弹性指数发布 | 美通企业日报...
- Intellij IDEA 创建资源文件夹 source folder
热门文章
- 视频国标协议服务器,国标GB28181流媒体协议客户端EasyGBS视频平台权限功能的实现...
- 新版Microsoft Edge和google chrome谁才是浏览器的王者?
- 10-1Python学习笔记 10-2C语言学习笔记 : 在文本编辑器中新建一个文件, 写几句话来总结一下你至此学到的Python知识
- 轻度分析游戏之《啪啪三国》
- 【狂神说】SpringBoot
- 1369:合并果子(fruit)——优先队列
- 计算机毕业设计springboot家庭财务管理系统 596n0源码+系统+程序+lw文档+部署
- 飞思卡尔K60nbsp;FTM模块详…
- 微信小程序开发技巧集锦(6):实现Tabs选项卡切换
- 106条心语语录――棠棠不落阁(写给青春一)