【Elasticsearch】修改数据流(Data Stream)

devtools/2025/3/4 16:55:28/

在Elasticsearch中,修改数据流(Data Stream)的操作主要包括更改映射(mappings)和设置(settings)。以下是关于如何修改数据流的详细步骤和方法:

1.修改数据流的映射

数据流的映射定义了数据的结构,包括字段类型和索引设置。修改映射时,需要更新数据流所使用的索引模板(Index Template),因为新映射会应用于未来的后端索引(Backing Indices)。

添加新字段映射

1. 更新索引模板:确保新字段映射被添加到未来的后端索引中。

```http

   PUT /_index_template/my-data-stream-template

   {

       "index_patterns": ["my-data-stream*"],

       "data_stream": {},

       "priority": 500,

       "template": {

           "mappings": {

               "properties": {

                   "new_field": { "type": "text" }

               }

           }

       }

   }

   ```

2. 更新现有数据流的映射:使用更新映射API将新字段映射添加到现有数据流中。

```http

   PUT /my-data-stream/_mapping

   {

       "properties": {

           "new_field": { "type": "text" }

       }

   }

   ```

修改现有字段映射

1. 更新索引模板:更改字段的映射参数(如`ignore_malformed`)。

```http

   PUT /_index_template/my-data-stream-template

   {

       "index_patterns": ["my-data-stream*"],

       "data_stream": {},

       "priority": 500,

       "template": {

           "mappings": {

               "properties": {

                   "host": {

                       "properties": {

                           "ip": { "type": "ip", "ignore_malformed": true }

                       }

                   }

               }

           }

       }

   }

   ```

2. 更新现有数据流的映射:将更改应用于现有数据流。

```http

   PUT /my-data-stream/_mapping

   {

       "properties": {

           "host": {

               "properties": {

                   "ip": { "type": "ip", "ignore_malformed": true }

               }

           }

       }

   }

   ```

2.修改数据流的设置

数据流的设置分为动态设置(Dynamic Settings)和静态设置(Static Settings)。动态设置可以在运行时更改,而静态设置只能在创建后端索引时设置。

修改动态设置

1. 更新索引模板:更改索引模板中的动态设置。

```http

   PUT /_index_template/my-data-stream-template

   {

       "index_patterns": ["my-data-stream*"],

       "data_stream": {},

       "priority": 500,

       "template": {

           "settings": {

               "index.refresh_interval": "30s"

           }

       }

   }

   ```

2. 更新现有数据流的设置:使用更新索引设置API将更改应用于现有数据流。

```http

   PUT /my-data-stream/_settings

   {

       "index": {

           "refresh_interval": "30s"

       }

   }

   ```

修改静态设置

静态设置(如`sort.field`和`sort.order`)只能在创建后端索引时设置。要更改静态设置,需要更新索引模板,然后通过滚动操作(Rollover)或重新索引(Reindex)将其应用于现有数据流。

3.使用重新索引更改映射或设置

重新索引是更改现有字段数据类型或更新静态设置的常用方法。以下是重新索引的步骤:

1. 创建或更新索引模板:定义新的映射或设置。

```http

   PUT /_index_template/new-data-stream-template

   {

       "index_patterns": ["new-data-stream*"],

       "data_stream": {},

       "priority": 500,

       "template": {

           "mappings": {

               "properties": {

                   "@timestamp": { "type": "date_nanos" }

               }

           },

           "settings": {

               "sort.field": ["@timestamp"],

               "sort.order": ["desc"]

           }

       }

   }

   ```

2. 创建新的数据流:手动创建新的数据流。

```http

   PUT /_data_stream/new-data-stream

   ```

3. 重新索引数据:将现有数据流中的数据重新索引到新数据流中。

```http

   POST /_reindex

   {

       "source": { "index": "my-data-stream" },

       "dest": { "index": "new-data-stream", "op_type": "create" }

   }

   ```

4. 删除旧数据流:在验证新数据流中的数据后,删除旧数据流。

```http

   DELETE /_data_stream/my-data-stream

   ```

4.数据流的别名管理

可以使用别名API更新数据流的别名,以实现无缝切换。

```http

POST /_aliases

{

    "actions": [

        { "remove": { "index": "old-data-stream", "alias": "logs" } },

        { "add": { "index": "new-data-stream", "alias": "logs" } }

    ]

}

```

总结

• 修改数据流的映射和设置需要更新索引模板,并将更改应用于现有数据流。

• 动态设置可以通过更新索引设置API直接更改,而静态设置需要通过滚动或重新索引操作来应用。

• 重新索引是更改现有字段数据类型或更新静态设置的有效方法,但需要创建新的数据流并重新索引数据。

• 使用别名可以实现数据流的无缝切换,而不会影响查询性能。

通过以上方法,可以灵活地管理和修改Elasticsearch中的数据流,以满足不同的数据管理和查询需求。


http://www.ppmy.cn/devtools/164509.html

相关文章

win32汇编环境,窗口程序中使控件子类化的示例一

;运行效果 ;win32汇编环境,窗口程序中使编辑框控件子类化的示例一 ;窗口子类化,就是把某种控件,自已再打造一遍,加入自已的功能。比如弄个特殊形状的按钮,或只能输入特殊字符的编辑框 ;当然,一般来说,这都是…

iOS基础开发知识速览 - 理解你要逆向的目标

iOS基础开发知识速览 - 理解你要逆向的目标 正如上一篇文章结尾所预告的,在完成环境搭建后,我们需要了解iOS开发的基础知识。这不是要求你成为一名iOS开发者,而是为了让你在逆向分析过程中能够理解应用的代码结构和运行逻辑。正所谓"知…

灵鸢系统,引领车与无人机深度融合新潮流

越野灵鸢 即刻出片 这不是一次技术的革新,而是对未来出行的全新定义:比亚迪和大疆强强联合,想象一下,车载摄像头只能记录车头那点风景,现在呢 ? 直接召唤无人机一键起飞,不管是堵车、越野时可以…

MongoDB Compass中MONGOSH常用查询整理

MongoDB Compass中MONGOSH常用查询整理 选择数据库基本的查找指令find() 方法findOne() 方法 高级查询条件比较操作符逻辑操作符投影操作排序操作限制和跳过操作limit() 方法skip() 方法 正则表达式查询数组查询 MongoDB Compass 是一款可视化的 MongoDB 数据库管理工具&#x…

WSL下使用git克隆失败解决

WSL默认nat模式,别动了防火墙放行,见图1git导入[bash1],ip为你wsl上linxu通过ifconfig获取的本机ip,端口对好某alcsh软件开启tun模式【经过测试,不开也行】应该成了,如果不行,修改.wslconfig为下…

Prompt Engineering for Large Language Models

题目 大型语言模型的快速工程 简介 随着 OpenAI 的 ChatGPT 和 Google 的 Bard 等软件的普及,大语言模型(LLM)已经渗透到生活和工作的许多方面。例如,ChatGPT 可用于提供定制食谱,建议替换缺失的成分。它可用于起草研…

【Elasticsearch】ignore_malformed

在Elasticsearch中,ignore_malformed是一个字段映射参数,用于控制在索引文档时,如果字段数据不符合其定义的数据类型,Elasticsearch 应该如何处理这种情况。具体来说,ignore_malformed参数决定了是否忽略格式错误的数据…

决策树(Decision Tree):机器学习中的经典算法

1. 什么是决策树? 决策树(Decision Tree)是一种基于树形结构的机器学习算法,适用于分类和回归任务。其核心思想是通过一系列的规则判断,将数据集不断划分,最终形成一棵树状结构,从而实现预测目…