es7 创建模板时,报错 Validation Failed: 1: index patterns are missing

es7 创建模板时,报错 Validation Failed: 1: index patterns are missing

在使用elasticsearch 7.15 创建template时,程序报 Validation Failed: 1: index patterns are missing

在使用spring boot 集成 elasticsearch 7,每次往 elasticsearch 中索引插入数据时,为这条数据自动添加一个默认的创建时间、更新时间,又不想在数据对象中指定此字段。

在这里插入图片描述
上图是来自官网对 ingest pipelines(管道)的说明,意思就是在进行文档插入时,文档首先要经过 ingest pipelines(管道)进行加工处理后,再插入到索引库中。

配置自动添加默认字段的脚本程序 参考:
https://www.freesion.com/article/99011432714/

文中变量(snowflakeService):生成 雪花算法id 的一个工具类 (可以参考 hutool 工具包)

第一步:首先需要创建一个 ingest pipelines

	@Test
    public void testPipeline() throws IOException {
   
        XContentBuilder jsonBuilder = jsonBuilder().startObject()
                .field("description", "inner pipeline-demo-date")
                .startArray("processors")
                .startObject()
                .field("script")
                .startObject()
                .field("lang", "painless")
                .field("source", "" +
                        "          def imp = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss.SSS\");\n" +
                        "          imp.setTimeZone(TimeZone.getTimeZone(\"Asia/Shanghai\"));\n" +
                        "            def ts = imp.format(new Date((new Date().getTime())));\n" +
                        "            if (ctx.create_time==null  ){\n" +
                        "              ctx.create_time = ts;\n" +
                        "            }\n" +
                        "            if (ctx.delete_time==null  ){\n" +
                        "              ctx.delete_time = 0;\n" +
                        "            }\n" +
                        "            ctx.update_time = ts;" +
                        "")
                .endObject()
                .endObject()
                .endArray()
                .endObject();

        BytesReference reference = BytesReference.bytes(jsonBuilder);
        /*
         * 第一个参数:管道唯一id
         * 第二个参数:配置管道
         * 第三个参数:管道数据类型
         */
        PutPipelineRequest request = new PutPipelineRequest("pipeline-demo-date", reference, XContentType.JSON);
        request.timeout(TimeValue.timeValueSeconds(2));

        AcknowledgedResponse response = restHighLevelClient.ingest().putPipeline(request, RequestOptions.DEFAULT);
        System.out.println(response.isAcknowledged());
        // 关闭连接
        restHighLevelClient.close();
    }

第二步:创建一个模板,绑定上面创建的管道(ingest pipelines)

	@Test
    public void testPutIndexTemplate() throws IOException {
   
        PutIndexTemplateRequest request = new PutIndexTemplateRequest("demo");
        
        Settings.Builder builder = Settings.builder()
                .put("default_pipeline", "pipeline-demo-date");
        request.settings(builder);

        XContentBuilder jsonBuilder = jsonBuilder()
                .startObject()
                .startObject("properties")
                .startObject("date_time")
                .field("type", "date")
                .field("format", "epoch_millis")
                .endObject()
                .startObject("create_time")
                .field("type", "date")
                .field("format", "yyyy-MM-dd HH:mm:ss.SSS")
                .endObject()
                .startObject("update_time")
                .field("type", "date")
                .field("format", "yyyy-MM-dd HH:mm:ss.SSS")
                .endObject()
                .endObject()
                .endObject();

        BytesRefe
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值