ElasticSearch7.6.x 模板及滚动索引创建及注意事项

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: ElasticSearch7.6.x 模板及滚动索引创建及注意事项

@[TOC]

声明:

==注意点1:滚动索引是设置索引,而非创建索引,且设置一次结果返回 "rolled_over" : true,则会按照设定规则创建新索引,名字递增,而非一次设置永久有效==

==注意点2:设置滚动索引会出现两个别名,一个读取别名(在模板中定义),一个写入别名(在创建index中指定)==
image.png
image.png
image.png

举例说明 创建模板+设置滚动索引+读写

判断模板是否存在

image.png

try {
   
    IndexTemplatesExistRequest request = new IndexTemplatesExistRequest("test-logs");
    boolean exists = client.indices().existsTemplate(request, RequestOptions.DEFAULT);
    System.out.println("模板是否存在:" + exists );
} catch (IOException e) {
   
    e.printStackTrace();
}

创建模板

image.png

try {
   
    PutIndexTemplateRequest request = new PutIndexTemplateRequest("test-logs");
    request.patterns(Arrays.asList("test-logs-*"));
    request.alias(new Alias("test-logs-read"));
    request.source("{\n" +
            "    \"settings\" : {\n" +
            "        \"number_of_shards\" : 5,\n" +
            "        \"number_of_replicas\" : 1,\n" +
                    "\"analysis\": {" +
                        "\"analyzer\": {" +
                            "\"my_analyzer\": {" +
                                "\"type\": \"pattern\"," +
                                        "\"pattern\":[\"_\",\"-\"]" +
                "            }\n" +
            "           }\n" +
            "       }\n" +
            "    },\n" +
            "    \"mappings\" : {\n" +
            "            \"properties\" : {\n" +
             "                \"file_name\" : { \"type\" : \"text\" },\n" +
             "                \"table\" : { \"type\" : \"text\",\"analyzer\": \"my_analyzer\" },\n" +
             "                \"update_time\" : { \"type\" : \"long\", \"index\": false}" +
            "            }\n" +
            "        }\n" +
            "    }\n" +
            "}", XContentType.JSON);
    // 3.发送请求
    AcknowledgedResponse putTemplateResponse  = client.indices().putTemplate(request, RequestOptions.DEFAULT);
    System.out.println("创建模板成功!");
    System.out.println("response:" + putTemplateResponse );
    System.out.println("isAcknowledged:" + putTemplateResponse.isAcknowledged() );
} catch (IOException e) {
   
    log.error("IOException:", e);
}

应用模板创建索引

image.png

try {
   
    // 1.创建索引名
    CreateIndexRequest request = new CreateIndexRequest("test-logs-100000");
    request.alias(new Alias("test-logs-write"));
    CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
    System.out.println("创建索引库成功!");
    System.out.println("response:" + response);
} catch (IOException e) {
   
    log.error("IOException:{}", e);
} catch (ElasticsearchStatusException e) {
   
    log.error("ElasticsearchStatusException:{}", e);
}

设置滚动索引

image.png

try {
   
    RolloverRequest request = new RolloverRequest("test-logs-write", null);
    request.addMaxIndexAgeCondition(new TimeValue(7, TimeUnit.DAYS));
    request.addMaxIndexDocsCondition(2);
    request.addMaxIndexSizeCondition(new ByteSizeValue(5, ByteSizeUnit.GB));
    RolloverResponse rolloverResponse = client.indices().rollover(request, RequestOptions.DEFAULT);
    System.out.println("设置滚动索引成功!");
    System.out.println("isRolledOver:" + rolloverResponse.isRolledOver());
} catch (IOException e) {
   
    log.error("IOException:{}", e);
}

添加文档,使用“写”别名

image.png

try {
   
    // 1、创建索引请求
    IndexRequest request = new IndexRequest("test-logs-write", "_doc");
    // 2、准备文档数据
    Map<String, Object> jsonMap = new HashMap<>();
    jsonMap.put("file_name", "财政部二月份文件");
    jsonMap.put("table", "103_table-111");
    jsonMap.put("update_time", System.currentTimeMillis());
    request.source(jsonMap, XContentType.JSON).setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);
    //3、发送请求    同步方式
    IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
    System.out.println("添加数据成功!");
    System.out.println("indexResponse:" + indexResponse);
    System.out.println(indexResponse.status());
} catch (IOException e) {
   
    log.error("出现异常:{}", e);
}

查询,使用“读”别名

image.png

try {
   
            // 1、创建search请求
            SearchRequest searchRequest = new SearchRequest("test-logs-read");
            searchRequest.types("_doc");
            // 2、用SearchSourceBuilder来构造查询请求体 ,请仔细查看它的方法,构造各种查询的方法都在这。
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            sourceBuilder.from(0);
            sourceBuilder.size(10);
            sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
            sourceBuilder.sort(new FieldSortBuilder("update_time").order(SortOrder.DESC));
            MultiMatchQueryBuilder matchQueryBuilder = QueryBuilders.multiMatchQuery("103", "table").fuzziness(Fuzziness.AUTO);
            sourceBuilder.query(matchQueryBuilder);
            //3. 高亮设置
            HighlightBuilder highlightBuilder = new HighlightBuilder();
            highlightBuilder.requireFieldMatch(false).field("table").preTags("<font color=red>").postTags("</font>");
            sourceBuilder.highlighter(highlightBuilder);
            //4.将请求体加入到请求中
            searchRequest.source(sourceBuilder);
            //5、发送请求
            SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
            SearchHits hits = searchResponse.getHits();
            SearchHit[] searchHits = hits.getHits();
            System.out.println("检索数据成功!");
            System.out.println(searchResponse);
            System.out.println(hits);
            System.out.println("num:" + searchHits.length);
            for (SearchHit hit : searchHits) {
   
//                String source = hit.getSourceAsString();
//                System.out.println(source);
                System.out.println(hit);
            }
        } catch (IOException e) {
   
            log.error("出现异常:{}", e);
        }

本人先关其他文章链接

1.ElasticSearch7.6.x 模板及滚动索引创建及注意事项
https://blog.csdn.net/a924382407/article/details/115082265

2.ElasticSearch的IK分词器
https://blog.csdn.net/a924382407/article/details/117255506

3.ElasticSearch核心概念:倒排索引
https://blog.csdn.net/a924382407/article/details/117255449

4.springboot集成ElasticSearch使用completion实现补全功能
https://blog.csdn.net/a924382407/article/details/115868167

5.ES Restful API讲解使用
https://blog.csdn.net/a924382407/article/details/115085022

6.ES API,使用Kibana的开发工具用例说明
https://blog.csdn.net/a924382407/article/details/115084549

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
2月前
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
67 5
|
2月前
|
存储 分布式计算 大数据
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
63 3
|
4月前
|
存储 API 数据库
检索服务elasticsearch索引(Index)
【8月更文挑战第23天】
70 6
|
27天前
|
存储 JSON 关系型数据库
Elasticsearch 索引
【11月更文挑战第3天】
35 4
|
3月前
|
JSON 自然语言处理 数据库
ElasticSearch基础1——索引和文档。Kibana,RestClient操作索引和文档+黑马旅游ES库导入
概念、ik分词器、倒排索引、索引和文档的增删改查、RestClient对索引和文档的增删改查
ElasticSearch基础1——索引和文档。Kibana,RestClient操作索引和文档+黑马旅游ES库导入
|
3月前
|
存储 搜索推荐 数据建模
Elasticsearch 的数据建模与索引设计
【9月更文第3天】Elasticsearch 是一个基于 Lucene 的搜索引擎,广泛应用于全文检索、数据分析等领域。为了确保 Elasticsearch 的高效运行,合理的数据建模和索引设计至关重要。本文将探讨如何为不同的应用场景设计高效的索引结构,并分享一些数据建模的最佳实践。
134 2
|
4月前
|
JSON 自然语言处理 数据库
Elasticsearch从入门到项目部署 安装 分词器 索引库操作
这篇文章详细介绍了Elasticsearch的基本概念、倒排索引原理、安装部署、IK分词器的使用,以及如何在Elasticsearch中进行索引库的CRUD操作,旨在帮助读者从入门到项目部署全面掌握Elasticsearch的使用。
|
4月前
|
自然语言处理 Java 索引
ElasticSearch 实现分词全文检索 - Java SpringBoot ES 索引操作
ElasticSearch 实现分词全文检索 - Java SpringBoot ES 索引操作
46 0
|
27天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
38 5
|
2月前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
180 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。