【自学elasticsearch7】结合es语法和java的HighLevelClient:索引(映射)创建

  • 写在开头
    • 开箱即用的elasticsearch
    • 用curl语句在es中创建第一个索引(映射)
    • 用HighLevelClient创建第一个索引(映射)

写在开头

大学毕业入职半年的菜鸡第一篇博客,多次在项目中简单使用过es,es的介绍和故事等随处可见,不再赘述,官方的地址贴在这里,废话不多说,直接进入正题。

官方文档:《Elasticsearch 权威指南》中文版

注意:官方文档基于es2,本文基于es7

es创始人Shay Banon的故事点这里

开箱即用的elasticsearch

es官方下载地址
kibana官方下载地址

windows下为例(环境变量中请配置好JAVA_HOME):
下载解压后双击/bin/elasticsearch.bat即可启动es,访问地址:localhost:9200,出现以下信息为访问成功!

下载解压后双击/bin/kibana.bat即可启动kibana,访问地址:localhost:5601


注:如果需要本地kibana连接其它服务器的es,可修改/bin/config/kibana.yml的elasticsearch.hosts: [“服务器地址:9200”]

如需安装ik中文分词器可参考ik分词器安装

用curl语句在es中创建第一个索引(映射)

PUT /firstmapping
{"mappings": {"properties": {"title":{"type":"keyword"},"content":{"type": "text"},"score":{"type": "double"}  }}
}

其中mapping定义该语句为一条映射语句,properties下填写索引的字段名(title,content,score),type为字段的类型(从es5开始不再支持string类型,将string类型拆分为text和keyword,其中keyword类型字段不可进行分词搜索)

es的常用类型如下:
(1)字符串:

  • text 于全索引,搜索时会自动使用分词器进分词再匹配
  • keyword 不分词,搜索时需要匹配完整的值

(2)数值型

  • 整型: byte,short,integer,long
  • 浮点型: float, half_float, scaled_float,double

(3)日期类型

  • date

其它的类型可以参考这里,不再赘述:常用类型参考

用HighLevelClient创建第一个索引(映射)

导入es7的依赖:

 <properties><!--声明es版本,很重要!!!!--><elasticsearch.version>7.13.0</elasticsearch.version></properties><dependencies><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.13.0</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>7.13.0</version></dependency><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.13.0</version></dependency></dependencies>

创建client配置类:

@Configuration
public class Client {@Value("${es.url}") //可在配置文件中添加添加多个es地址,配置es集群private String esUrl;@BeanRestHighLevelClient configRestHighLevelClient() throws Exception{String[] esUrls = esUrl.split(",");List<HttpHost> httpHosts = new ArrayList<>();for (String url : esUrls) {String[] esPort = url.split(":");httpHosts.add(new HttpHost(esPort[0],Integer.parseInt(esPort[1]),"http"));}return new RestHighLevelClient(RestClient.builder(httpHosts.toArray(new HttpHost[0])));}
}

创建映射的主要代码:

  XContentBuilder builder = XContentFactory.jsonBuilder();builder.startObject();{builder.startObject("mappings");{builder.startObject("properties");{builder.startObject("title");{builder.field("type", "keyword");}builder.endObject();builder.startObject("content");{builder.field("type", "text");}builder.endObject();builder.startObject("score");{builder.field("type", "double");}builder.endObject();}builder.endObject();}builder.endObject();}builder.endObject();CreateIndexRequest index = new CreateIndexRequest("secondmapping");index.source(builder);client.indices().create(index, RequestOptions.DEFAULT);

【自学elasticsearch7】结合es语法和java的HighLevelClient:索引(映射)创建相关推荐

  1. swift java_swift语法和java的比较

    1. 定义常量和变量 a. Swift语法 常量: let MaxNumber = 10 变量: var name = 1 b. Java语法 常量: public final int MaxNumb ...

  2. 【Java知识点整理】MarkDown语法和Java历史

    一.养成写博客的习惯 有助于总结归纳学习的知识.锻炼文笔.训练逻辑思维能力.有助于多思考和总结 1.博客网站 常用的博客网,CSDN--专业的IT博客 2.自己搭建博客网站 需要一些费用,1000多元 ...

  3. js的语法和java相同_js的一些有别于java语法

    请原谅一个js初学者不可避免的把js和java相提并论,并兴奋地发现js很灵活很有动感啊 1.switch可用于字符串: var a = 'abc'; switch(a){ case 1:alert( ...

  4. 正则表达式基本语法和Java中的简单使用

    ​一.正则表达式语法 1.计数符(以下n和m为非负整数,且m>n) *,匹配0次或多次,即{0,}: +,匹配1次或多次,即{1,}: ?,匹配0次或1次,即{0,1}: {n},匹配n次: { ...

  5. ES安装启动及could not find java in bundled jdk at /opt/elasticsearch/elasticsearch-7.9.1/jdk/bin/java报错

    1.首先去es的官网下载ES 然后将下载后的包上传到linux环境指定的目录下面 进行解压 解压命令为:sudo tar -zxvf elasticsearch-7.9.1-linux-aarch64 ...

  6. 零基础学编程,如何区分C语言和Java?我们到底如何怎么进行选择!

    C语言和 Java的主要区别:面向过程/面向对象.编译型/混合型.不同的应用场景.只要阅读二者的入门资料就清楚了. 时间足够的话,先学C再学Java:时间不够直接上 Java. 一个合格的程序员当然是 ...

  7. c语言和java哪个有前途_C语言和Java哪个更适合初学者?

    目前,无论是从应用范围还是流行程度来看,C语言和Java都是当下最为火热的编程语言.想要零基础入门编程的学习者在一开始的学习中都会碰到这样的难题:C语言和Java哪个更适合初学者?的确,编程语言的选择 ...

  8. Go语言和Java、python等其他语言的对比分析

    一.Go语言设计初衷 1.设计Go语言是为了解决当时Google开发遇到的问题: 大量的C++代码,同时又引入了Java和Python 成千上万的工程师 数以万计行的代码 分布式的编译系统 数百万的服 ...

  9. 【236期】ElasticSearch 进阶:一文全览各种 ES 查询在 Java 中的实现

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...

最新文章

  1. 网络口协商_以太网端口协商解析
  2. SAP FICO hande汉得培训资料---II 应收模块篇 PDF 电子版
  3. StringBuilder类与String类的区别
  4. [register]-05-ARMv8中常用系统寄存器详解
  5. JAVA是如何传递参数的?是传值(by value)?还是传地址(by reference)?
  6. 史上最全java堆,将知识点掰碎了给你嚼,还不信学不会。
  7. DFS迷宫递归所有路径 新手入门
  8. python导入同一文件夹下的类_Python模块导入机制与规范
  9. python 正则表达式匹配的位置_python正则表达式匹配 模式匹配
  10. hibernate 映射表_Hibernate多对多映射-连接表
  11. qmessagebox 设置显示屏幕中间_windows7屏幕分辨率设置
  12. 看《乡村爱情》,秒懂区块链!
  13. “vmware tools 只能虚拟机中安装”的解决方法
  14. 【C/C++】C++重复率最高、最经典面试题/笔试题(程序题篇)【持续更新】
  15. EVM和RF的各种技巧知识详解(转)
  16. DSA数字签名原理及python实现
  17. 用741运算放大器搭建RC正弦振荡器:文氏电桥振荡电路
  18. 微型计算机外部设备接口,第五章 微型计算机输入输出接口
  19. iOS 图片涂鸦功能
  20. C# 线程的挂起与唤醒 (AutoResetEvent,ManualResetEvent)

热门文章

  1. 2018年京东JDATA算法 大赛:如期而至-用户购买时间预测,方案分享
  2. 第 1 章 - 权衡的艺术
  3. python中split()用法
  4. linux 头文件 位置
  5. grpc 报错 rpc: the client connection is closing
  6. HDU 5113 Black And White(搜索+剪枝)
  7. 青蛙跳台阶问题(史上最详细)
  8. div横排 html_HTML+CSS-如何定义让两个div横向排列
  9. 微信公众平台的订阅号和服务号有什么不同?各自有什么优缺点?
  10. JavaScript学习手册七:JS循环语句