es入门学习7-java-es自身API


  1. 使用起前面的集群环境进行学习

一、 公共的东西

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相关推荐

  1. Linux中的Java类,Java基础入门学习-Java中类的属性

    Java基础入门学习-Java中类的属性 发布时间:2006-05-27 00:46:15来源:红联作者:WWW Public.private.protected显示了三种类中的属性和服务的类型,pu ...

  2. ES入门学习:ElasticSearch、Kibana、ik分词器的安装、简单使用及SpringBoot集成

    前言 es是采用Java语言开发,因此,想要安装运行es需要提前准备好jdk环境,关于linux配置jdk在前文linux配置jdk 本文主要介绍es的安装.kibana的安装和简单使用及ik分词器的 ...

  3. zookeeper入门学习之java api会话建立《四》

    在上一篇zk中简单玩了下api的连接创建会话,也总是留下了很多坑,就是那些引申开来,搞不明白的问题.有时候想追究起来,问题总是那么无穷无尽,有时候问题比答案更有力度吧,到最后都是些哲学问题吗?存在的这 ...

  4. 【Java入门学习】JAVA设计一个雇员类,创建雇员类对象

    题目:设计一个雇员类,创建雇员类对象,统计雇员的出勤人数 1.属性包括:编号.姓名.年龄.职务.部门.出勤人数 2.方法包括:构造方法.输出信息的方法.签到方法 要求: 1.考虑属性和方法的访问权限 ...

  5. java 调用win32 api 学习总结

    java使用JInvoke调用windows API 使用jinvoke调用windowsAPI.jna使用比较麻烦,需要写c代码和参数转换,jinvoke的使用就像jdk中的包一样. 官网使用参考: ...

  6. sts java配置tomcat_Java Web入门学习(一) STS与Tomcat配置

    Java Web学习(一) STS与Tomcat配置 一.IDE的选择 使用基于Eclipse的STS Ide ,个人感觉挺好用的. 根据以上两张图片,将STS 下载下来.然后解压缩. 用编辑器打开S ...

  7. ES(Elasticsearch)入门学习教程

    Elasticsearch 入门学习教程 1.1 为什么要学Elasticsearch? 1.2 如何下载安装使用ES? 1.2.1 ES 安装使用条件 1.2.2 ES 下载须知 1.2.3 ES ...

  8. PHP的ES入门(一)—— Index的创建和删除

    大神请看 本文不一定写的全部都对,如果有哪里写得不好或者不对,可以提但请不要喷,不喜勿看绕道走就是了,虽然有可能在一些小知识点上会误导小白,但是还是可以看看基础的ES操作,对于使用还是一点帮助的 ES ...

  9. php es使用,PHP的ES入门(一)—— Index的创建和删除

    大神请看 本文不一定写的全部都对,如果有哪里写得不好或者不对,可以提但请不要喷,不喜勿看绕道走就是了,虽然有可能在一些小知识点上会误导小白,但是还是可以看看基础的ES操作,对于使用还是一点帮助的 ES ...

最新文章

  1. 在ML中缺乏数据可是个大问题,亲测有效的5种方法帮您解决
  2. 在代码中定义一个执行线程的步骤
  3. Qt学习之路_1(安装及首次体验)
  4. AAAI 2019 | 自动机器学习计算量大!这种多保真度优化技术是走向应用的关键
  5. 2020“高教社”杯全国大学生数学建模竞赛——建模国赛优秀论文
  6. pcm 8k单声道和双声道采样_音频接口PCM
  7. MySQL 数据库图形化管理界面应用种草之 Navicat Premium 如何使用
  8. 10.14. Network
  9. Github 标星 13K+!这可能是最好的 Java 博客系统
  10. mysql 高并发 优惠券_转 mysql处理高并发,防止库存超卖
  11. Adobe 再次发布带外更新,修复影响10款产品的漏洞
  12. Response.setContentType 可设置属性
  13. 【转贴】我对测试工作的一些认识
  14. adb shell按键操作(input keyevent)
  15. PascalVOC Dataset下载链接
  16. ccy 朴素版(顺序搜索)19ms
  17. libvlc 裁剪及编译
  18. 澳大利亚计算机博士几年,澳洲墨尔本大学博士读几年
  19. Lavazza咖啡店进中国一年已在上海开出5家门店;IMA年度全球薪酬调查结果出炉;全球生物制药弹性指数发布 | 美通企业日报...
  20. Intellij IDEA 创建资源文件夹 source folder

热门文章

  1. 视频国标协议服务器,国标GB28181流媒体协议客户端EasyGBS视频平台权限功能的实现...
  2. 新版Microsoft Edge和google chrome谁才是浏览器的王者?
  3. 10-1Python学习笔记 10-2C语言学习笔记 : 在文本编辑器中新建一个文件, 写几句话来总结一下你至此学到的Python知识
  4. 轻度分析游戏之《啪啪三国》
  5. 【狂神说】SpringBoot
  6. 1369:合并果子(fruit)——优先队列
  7. 计算机毕业设计springboot家庭财务管理系统 596n0源码+系统+程序+lw文档+部署
  8. 飞思卡尔K60nbsp;FTM模块详…
  9. 微信小程序开发技巧集锦(6):实现Tabs选项卡切换
  10. 106条心语语录――棠棠不落阁(写给青春一)