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,一经查实,立即删除!

相关文章

ASCII码与string的相互转换

ASCII码与string的相互转换 思路&#xff1a; 1&#xff09;ASCII码转string&#xff1a;把字符&#xff08;串&#xff09;直接转换为int类型&#xff0c;即可得到ASCII码&#xff1b; 2&#xff09;string转ASCII码&#xff1a;将数字转换为字符串转出&#xff1b; {//将字…

X264代码中一些参数的意义

Main&#xff08;int argc&#xff0c;char *argv[]&#xff09;; 为了方便起见&#xff0c;不妨改写为&#xff1a; Main(void){ ...... intargc5; char*argv[]{ "main","-o","test.264","foreman.yuv","352x288" }; …

spring mvc注解@RequestMapping

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

Start application automatically during controller boot-up

&#xfeff;&#xfeff; Tip English •German Start application automatically during controller boot-up Description It is possible to start any program automatically during the boot-up procedure of the KR C4 controller. Precondition •User group “Exper…

C#using static

平常用法&#xff1a; using 命名空间&#xff1b; using System; Console.WriteLine("Hello&#xff0c;World&#xff01;");using static用法&#xff1a; C#6中支持这种写法&#xff0c;这样定义后可以可以访问类的静态成员 WriteLine是Console类的静态函数&am…

redis数据迁移

一&#xff1a;AOF方式 需求&#xff1a; 一个没有数据的redis。 清空redis数据方法 bash> echo "keys *" | redis-cli --raw -p 6378 |sed -r s/(.*)/redis-cli --raw -p 6378 del \1 /g |bash 1.备份 bash> redis-cli --raw -p 6378 redis> config get di…

阿里云OSS 上传文件SDK

Aliyun OSS SDK for C# 上传文件 另外&#xff1a;查找的其他实现C#上传文件功能例子&#xff1a; 1、WPF用流的方式上传/显示/下载图片文件(保存在数据库) &#xff08;文末有案例下载链接&#xff09; 2、WPF中利用WebClient向服务器上传文件 3、C#文件上传的简单实现 4、C#实…

关于level_idc和Profile_IDC的解释

2010-01-21 15:51:40| 分类&#xff1a; windows mobile开 |字号 订阅 Description: Set bitstream Profile IDC. Default is 88. Note: Some profiles cannot support certain features. See MPEG-4 AVC for supported features for each profile. Reference software may…

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

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

ADO.NET改进防注入

static void Main1(string[] args) { //用户输入一个需要查询的条件 car表 Console.WriteLine("请输入"); string code Console.ReadLine(); SqlConnection conn new SqlConnection("server.;databasemydb;usersa;pwd100867"); SqlCommand cmd conn.Crea…

poj 2139

Floyd-Warshall模板题&#xff0c;我才刚学最短路。。。。 #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int maxn30050; int d[maxn][maxn]; int v,m,n; int a[maxn]; const int inf0…

C#使用了未赋值的局部变量

错误原因&#xff1a; 我们先看下例子&#xff1a; int A; Console.WriteLine("数字&#xff1a;{0:d}", A);//在控制台输出文本这时提示错误&#xff1a;错误 1 使用了未赋值的局部变量“A” 原因是C#在使用变量前必须要进行初始化。 解决 解决方案有两个 1、在…

EtherCAT伺服驱动器-如何选择硬件开发方案

&#xfeff;&#xfeff;EtherCAT伺服驱动器-如何选择硬件开发方案

Codevs 1689 建造高塔

1689 建造高塔时间限制: 1 s空间限制: 128000 KB题目等级 : **钻石 Diamond** 题目描述 Description n有n种石块&#xff0c;石块能无限供应。每种石块都是长方体&#xff0c;其中第i种石块的长、宽、高分别为li、wi、hi。石块可以旋转&#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…

主流开源编解码器Xvid,x264,ffmpeg 性能对比

如有转载请注明出处&#xff1a;孔祥文博客http://kswapd.cublog.cn Xvid是基于MPEG4协议的编解码器&#xff0c;x264是基于H.264协议的编码器&#xff0c;ffmpeg集合了各种音频&#xff0c;视频编解码协议&#xff0c;通过设置参数可以完成基于MPEG4,H.264等协议的编解码&…

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

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

Oracle 【IT实验室】数据库备份与恢复之:如何对Oracle数据库文件进行恢复与备份...

任何数据库在长期使用过程中&#xff0c;都会存在一定的安全隐患。对于数据库管理员来说不能仅寄希望于计算机操作系统的安全运行&#xff0c;而是要建立一整套的数据库备份与恢复机制。当数据库发生故障后&#xff0c;希望能重新建立一个完整的数据库&#xff0c;该处理称为数…

vue刷新当前路由:router-view 复用组件时不刷新的3种解决方案总结

vue-router是Vue.js官方的路由插件&#xff0c;它和vue.js是深度集成的&#xff0c;适合用于构建单页面应用。vue的单页面应用是基于路由和组件的&#xff0c;路由用于设定访问路径&#xff0c;并将路径和组件映射起来。传统的页面应用&#xff0c;是用一些超链接来实现页面切换…

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

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