Elasticsearch Index Templates(索引模板)

try {

PutIndexTemplateRequest request = new PutIndexTemplateRequest(“ubi_index_template”)

List indexPatterns = new ArrayList();

indexPatterns.add(“ubi*”);

request.patterns(indexPatterns);

/** mapping */

XContentBuilder jsonBuilder = XContentFactory.jsonBuilder()

.startObject()

.startObject(“_source”)

.field(“enabled”, false)

.endObject()

.startObject(“properties”)

.startObject(“host_name”)

.field(“type”, “keyword”)

.endObject()

.startObject(“created_at”)

.field(“type”, “date”)

.field(“format”, “yyyy-MM-dd HH:mm:ss”)

.endObject()

.endObject()

.endObject();

request.mapping(“_doc”, jsonBuilder);

Map<String, Object> settings = new HashMap<>();

settings.put(“number_of_shards”, 1);

request.settings(settings);

System.out.println(client.indices().putTemplate(request, RequestOptions.DEFAULT));

} catch (Exception e) {

// TODO: handle exception

} finally {

EsClient.close(client);

}

}

上述索引模板创建好之后,然后在向一个不存在的索引添加文档时,如果能找到合适的模板,则自动创建索引,否则抛出索引不存在,例如:

public static void index_template() {

ElasticsearchTemplate template = new ElasticsearchTemplate();

try {

Map<String, String> data = new HashMap<>();

data.put(“host_name”, “localhost”);

data.put(“created_at”, “2019-04-07 23:05:04”);

//ubi_201904该索引一开始不存在,但索引ubi_201904符合ubi_index_template

//中定义的匹配表达式ubi*,所以会自动创建索引。

template.index(“ubi_201904”, “_doc”, data);

} finally {

template.close();

}

}

其返回结果:

IndexResponse[index=ubi_201904,type=_doc,id=lCJZ-GkBrOLJP-QWff3I,version=1,result=created,seqNo=0,primaryTerm=1,shards={“total”:2,“successful”:1,“failed”:0}]

那如果能匹配到多个模板呢?

多个索引模板可能匹配一个索引,可以使用order属性为索引模板指定顺序。从顺序较小的开始寻找,order越大,越优先(前提是匹配模板表达式)。

举例如下:

PUT /_template/template_1

{

“index_patterns” : [“*”],

“order” : 0,

“settings” : {

“number_of_shards” : 1

},

“mappings” : {

“_doc” : {

“_source” : { “enabled” : false }

}

}

}

PUT /_template/template_2

{

“index_patterns” : [“te*”],

“order” : 1,

“settings” : {

“number_of_shards” : 1

},

“mappings” : {

“_doc” : {

“_source” : { “enabled” : true }

}

}

}

首先从order=0进行匹配,由于其表达式为*,则默认会全匹配,故首先尝试使用该模板,然后再遍历下一个模板,也就是order=1的模板,如果匹配,则使用第二个模板的配置,如果不匹配,则使用第一个模板的配置,依次类推。

其匹配的具体实现逻辑大概如下:

1、对所有的模板按照order属性进行升序排序。

2、遍历所有的模板,进行表达式匹配,匹配成功,则设置为当前匹配模板,然后判断下一个,直到把所有的模板都处理过。

3、选最后匹配的模板当成最后的模板。

最后

即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!

我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
一共有20个知识点专题,分别是:

Dubbo面试专题

JVM面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Java并发面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Kafka面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MongDB面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MyBatis面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MySQL面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Netty面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

RabbitMQ面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Redis面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Spring Cloud面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

SpringBoot面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

zookeeper面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

常见面试算法题汇总专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

计算机网络基础专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

设计模式专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南
面试专题**

[外链图片转存中…(img-Qb452K2f-1718694523750)]

zookeeper面试专题

[外链图片转存中…(img-KzpdtOIY-1718694523750)]

常见面试算法题汇总专题

[外链图片转存中…(img-wg4vwr2e-1718694523751)]

计算机网络基础专题

[外链图片转存中…(img-3Hjy2ZlC-1718694523751)]

设计模式专题

[外链图片转存中…(img-7vBeHKt4-1718694523752)]

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值