ElasticSearch创建、修改、获取、删除、索引Indice mapping和Index Template案例

为什么80%的码农都做不了架构师?>>>   hot3.png

The best elasticsearch highlevel java rest api-----bboss

ElasticSearch客户端框架bboss的ClientInterface 接口提供了创建/修改、获取、删除索引Indice和IndexTemplate的方法,本文举例说明其使用方法。

1 准备工作

参考文档在项目中导入Elasticsearch客户端:集成Elasticsearch Restful API案例分享

本文除了介绍索引Indice和Index Template的创建修改方法,还可以看到如何在dsl中添加注释的用法:

单行注释

## 注释内容

多行注释

#*。。。。注释内容。。。*#

更多bboss dsl配置和定义的内容,参考文档:高性能elasticsearch ORM开发库使用介绍 章节【5.3 配置es查询dsl脚本语法

2 定义创建Indice的dsl脚本

在配置文件-esmapper/demo.xml中定义一个名称为createDemoIndice的dsl脚本:

    <!--创建demo需要的索引表结构--><property name="createDemoIndice"><![CDATA[{"settings": {"number_of_shards": 6,"index.refresh_interval": "5s"},"mappings": {"demo": {"properties": {"demoId":{"type":"long"},"contentbody": {"type": "text" ##定义text类型的全文检索字段},"agentStarttime": {"type": "date"## ,"format":"yyyy-MM-dd HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd HH:mm:ss||epoch_millis"},"applicationName": {"type": "text",##定义text类型的全文检索字段"fields": { ##定义精确查找的内部keyword字段"keyword": {"type": "keyword"}}},"name": {"type": "keyword"}}}}}]]></property>

3 创建indice/判断indice是否存在/删除indice

根据上面定义的dsl脚本文件初始化ClientInterface对象,并创建索引表demo:

	public void testCreateIndice(){//创建加载配置文件的客户端工具,单实例多线程安全ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("esmapper/demo.xml");try {//判读索引表demo是否存在,存在返回true,不存在返回falseboolean exist = clientUtil.existIndice("demo");//如果索引表demo已经存在先删除mappingif(exist)clientUtil.dropIndice("demo");//创建索引表democlientUtil.createIndiceMapping("demo",//索引表名称"createDemoIndice");//索引表mapping dsl脚本名称,在esmapper/demo.xml中定义createDemoIndice//获取修改后的索引mapping结构String mapping = clientUtil.getIndice("demo");System.out.println(mapping);} catch (ElasticSearchException e) {// TODO Auto-generated catch blocke.printStackTrace();}}

4 定义索引Template dsl脚本

通过定义索引模板,定义表结构相同,但是索引表名称不同的索引表的建表模板,通过index_patterns中对应的模式名称来匹配索引模板适用的索引表:

   <property name="demoTemplate"><![CDATA[{"index_patterns": "demo-*", ## 5.x版本中请使用语法:"template": "demo-*""settings": {"number_of_shards": 30, ##定义分片数"number_of_replicas" : 2, ##定义副本数"index.refresh_interval": "5s" ## 定义索引写入刷新时间间隔},"mappings": {"demo": {"properties": {"contentbody": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"agentStarttime": {"type": "date","format":"yyyy-MM-dd HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd HH:mm:ss||epoch_millis"},"applicationName": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}}}}}}]]></property>

5 创建/获取/删除索引表模板

	public void testCreateTempate() throws ParseException{ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil("esmapper/demo.xml");//创建模板String response = clientUtil.createTempate("demotemplate_1",//模板名称"demoTemplate");//模板对应的脚本名称,在esmapper/demo.xml中配置System.out.println("createTempate-------------------------");System.out.println(response);//创建结果//获取模板/*** 指定模板* /_template/demoTemplate_1* /_template/demoTemplate** 所有模板 /_template**/String template = clientUtil.executeHttp("/_template/demotemplate_1",ClientUtil.HTTP_GET);System.out.println("HTTP_GET-------------------------");System.out.println(template);ElasticSearchHelper.getRestClientUtil().deleteTempate("demotemplate_1"); }

6 修改和获取索引表结构

修改先前创建的demo表,为其中的type demo增加email关键字段

定义dsl结构-esmapper/demo.xml

    <!--修改demo 索引表的结构,增加email字段https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html--><property name="updateDemoIndice"><![CDATA[{"properties": {"email": {"type": "keyword"}}}]]></property>

修改和获取mapping结构的方法:

	public void updateDemoIndice(){ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil(mappath);//修改索引表demo中type为demo的mapping结构,增加email字段,对应的dsl片段updateDemoIndice定义在esmapper/demo.xml文件中String response = clientUtil.executeHttp("demo/_mapping/demo","updateDemoIndice",ClientUtil.HTTP_PUT);System.out.println(response);//获取修改后的索引mapping结构String mapping = clientUtil.getIndice("demo");System.out.println(mapping);}

7 案例源码工程下载

https://github.com/bbossgroups/eshelloword-booter

https://gitee.com/bboss/eshelloword-booter

8 参考文档

https://my.oschina.net/bboss/blog/1556866

9 开发交流

elasticsearch技术交流:166471282

elasticsearch:

转载于:https://my.oschina.net/bboss/blog/1807473

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254672.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring mvc注解@RequestMapping

1、url路径映射 基本功能 2、窄化请求映射 根路径子路径 注意setViewName的路径。 3、限制http请求方法 get和 post 如果是get 转载于:https://www.cnblogs.com/jway1101/p/5773923.html

老婆的驾照要下来了,形容下我此刻的心情

&#xfeff;&#xfeff; 老婆的驾照要下来了&#xff0c;形容下我此刻的心情&#xff1a; 路上遇到的女人&#xff0c;大部分是不用眼睛和脑子开车的&#xff0c;完全是凭自己的感觉开车。凡是看到前车奇慢、路口犹豫不决、不打灯缓慢变线、不该…

windows环境下OpenLDAP安装与客户端连接配置

2019独角兽企业重金招聘Python工程师标准>>> 1.下载安装OpenLDAP版本 C:\Users\Administrator>slapd -V OpenLDAP 2.4.42 Standalone LDAP Server (slapd) 2.安装过程中&#xff0c;全部用默认的操作执行即可。 3.修改OpenLDAP文件如下&#xff1a; # MDB Backen…

halcon标定后改变世界坐标系参考点方法

halcon相机标定完成后&#xff0c;世界坐标系原点在标定板的中间&#xff0c;如果要自定义坐标系原点该如何操作 如图&#xff1a; 方法1 使用仿射变换 *pose_to_hom_mat3d (FinalPose, HomMat3D) *hom_mat3d_translate_local (HomMat3D, dx, dy, 0, HomMat3DTranslate) *hom_…

KUKA---US2电源的安全属性-------老款硬线连接实现的DRIVE安全STO SBC 、新款基于Safety over EtherCAT 网络帧实现的DRIVE安全STO SBC

安全双回路的监控&#xff1a;&#xff08;工业上的安全&#xff0c;是指安全等级&#xff0c;没有绝对的安全&#xff09; 1. 机械式&#xff1a;监控关断继电器的辅助反馈触点&#xff0c;这个关断继电器包含机械联锁触点&#xff0c;这样反馈触点和主触点可以同步开关动…

X11硬线接口信号 与Profisafe安全输入输出信号之间的区别与比较

&#xfeff;&#xfeff;X11硬线接口信号 与Profisafe安全输入输出信号之间的区别与比较 Profisafe安全输入信号US2信号有待深入&#xff08;通过外部PLC &#xff1a;&#xff09; &#xfeff;&#xfeff;

var类型推断关键字

目录var 类型推断介绍var的一个例子&#xff1a;编程遵循规则var 类型推断介绍 使用var定义变量时&#xff0c;用var关键字替代实际类型。编译器可以根据变量的初始化值自行“推断”变量的类型。 例如&#xff1a; var A 0&#xff1b; 等价于 int A 0&#xff1b;var的一个…

斯坦福大学机器学习——高斯判别分析

转自 http://blog.csdn.net/linkin1005/article/details/39054023 同朴素贝叶斯一样&#xff0c;高斯判别分析&#xff08;Gaussian discriminant analysismodel, GDA&#xff09;也是一种生成学习算法&#xff0c;在该模型中&#xff0c;我们假设y给定的情况下&#xff0c;x服…

MapGIS转Shp文件的单位问题

MapGIS转Shp文件的单位问题 原文:MapGIS转Shp文件的单位问题在MapGIS浏览查看一下数据&#xff0c;各种不习惯&#xff1b;用mapgis自带的转shp功能&#xff0c;属性表会出错&#xff1b;利用名为map2shp的试用版软件可将mapgis格式的数据较为良好转成shp格式。但经常会遇到一个…

显示/隐藏Mac系统中所有的隐藏文件

显示&#xff1a; 在终端输入:defaults write com.apple.finder AppleShowAllFiles YES隐藏: 在终端输入:defaults write com.apple.finder AppleShowAllFiles NO然后重启Finder即可(先点击左上角的苹果图标&#xff0c;再选强制退出&#xff0c;然后选中Finder&#xff0c;点击…

机械零点、MAM 文件 、 EMT标定原理

&#xfeff;&#xfeff; 机械零点、MAM 文件、EMT标定原理。 可调节的机械零点&#xff0c;不需要MAM文件&#xff0c;使之成为90度。 不可调节的机械零点&#xff0c;需要MAM文件修正&#xff0c;使之成为90度。 带负载的偏移补偿、带负载的偏移补偿mastering。做过带负…

智慧城市的互联网大脑架构图:大社交网络与智慧城市结合是关键

从本质上讲智慧地球和智慧城市还是互联网发展到一定程度&#xff0c;向城市建设蔓延和深入的结果。因此建设智慧城市就不能不忽略互联网的发展趋势和进化规律。 而越来越多的迹象表明“互联网正在向着与人类大脑高度相似的方向进化&#xff0c;它将具备自己的视觉、听觉、触觉、…

20145227鄢曼君《网络对抗》Web安全基础实践

20145227鄢曼君《网络对抗》Web安全基础实践 实验后回答问题 1.SQL注入攻击原理&#xff0c;如何防御&#xff1f; SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序&#xff0c;而这些输入大都是SQL语法里的一些组合&#xff0c;通过执行SQL语句进而执行攻击者所要…

[转]Xvid参数详解

众所周知&#xff0c;Mencoder以其极高的压缩速率和不错的画质赢得了很多朋友的认同&#xff01; 原来用Mencoder压缩Xvid的AVI都是使用Xvid编码器的默认设置&#xff0c;现在我来给大家冲冲电&#xff0c;讲解一下怎样使用Mencoder命令行高级参数制作Xvid编码格式AVI影片。经…

关于box-shadow属性的一点心得

一般我用到box-shadow都是用于诸如按钮&#xff0c;文本块&#xff0c;某些图标&#xff0c;css类似为: box-shadow: 1px 1px 5px rgba(0, 0, 0, .8);这样&#xff0c;样式看上去会更加柔和&#xff0c;或者增加了立体感。 我个人的理解上&#xff0c;box-shadow的本质就是本体…

javascript:正则表达式、一个表单验证的例子

阅读目录 本文内容&#xff1a;正则表达式&#xff1a;利用正则表达式进行表单验证的例子&#xff1a;回到顶部本文内容&#xff1a; 正则表达式正则表达式的使用方法正则表达式的特殊匹配字符正则表达式修饰符利用正则表达式进行表单验证的例子首发日期&#xff1a;2018-05-13…

Spring_01 spring容器、控制反转(IOC)、依赖注入(DI)

目录 1 什么是spring框架 2 spring框架的特点 3 spring容器 3.1 什么是spring容器 3.2 spring容器创建对象的编程步骤 3.4 spring容器创建对象的方式 3.5 bean元素的几个重要属性 4 IOC 4.1 什么是IOC 4.2 什么事DI 4.3 DI的三种方式 1 什么是spring框架 是一个开源的用来简化企…

一个传值的问题”*”与”*”

1/********************************************************* 2* Desc:参数传递&#xff1a;使用引用传递指针和直接传递指针地址的区别 3* Author:charley 4* DateTime:2010-12-7 11:00 02***********************************************************/ 03#include <…

spring boot 扩展之AutoConfigurationImportListener

最近阅读spring boot源码时发现&#xff0c;发现当spring使用ConfigurationClassParser加载使用Configuration注解类后&#xff0c;会使用AutoConfigurationImportSelector对加载的 Configuration注解的类进行一次过滤。当AutoConfigurationImportSelector过滤完成后会自动加载…